Autor Zpráva
MilanKarkulka
Profil
Ahoj, napsal jsem javascriptový a ajaxový script, který mi funguje ve všech prohlížečích - kromě Internet Exploreru 11. Mám následující 2 problémy.


<a href="javascript:mojeFunkce('Ahoj, jak se máš?')">
Jak mám escapovat text, který vkládám tímto způsobem do funkce? Protože IE vadí, pokud se tam nachází například otazníky. A i jiné znaky. Zatímco jiným prohlížečům to nevadí. Existuje nějaká funkce, která by to za mě ošetřila?

http://www.example.com/zpracujAjax.php?text=Ahoj, jak se máš?
Následně posílám tyto data ajaxem na server. Používám k tomu metodu GET. Všechny prohlížeče to zvládají. Ale opět to nefunguje v IE v okamžiku, kdy narazí na diakritiku nebo kdy se v textu nachází speciální znak. Například podtržítko. V tom případě na místě diakritiky nebo podtržítka následující jednoduše text odstřihne (ukončí). Co s tím?
Chamurappi
Profil
Reaguji na MilanaKarkulku:
který mi funguje ve všech prohlížečích
Ne pro všechny případy. Ampersand nebo mřížka ti to rozbije všude.

kromě Internet Exploreru 11.
V případě neescapovaných speciálních znaků v adrese nezáleží jen na prohlížeči, mluvit do toho může i proxy server. Rozhodně je to něco, čemu by ses měl vyhnout.

Kdykoliv přidáváš uživatelský vstup do strojově čteného formátu, musíš ten vstup patřičně escapovat, jinak si zaděláváš v lepším případě na chyby, v horším případě přímo na bezpečnostní díry (XSS, SQL injection).
Na escapování parametru v URL je v JavaScriptu určená nativní funkce encodeURIComponent.
MilanKarkulka
Profil
OK, a co to ošetření textu v parametru funkce? Existuje na to nějaká funkce?

Nebo existuje alespoň nějaký seznam znaků, které bych měl ošetřit? A stačí je escapovat lomítkem?

Vaše odpověď

Mohlo by se hodit

Neumíte-li správně určit příčinu chyby, vkládejte odkazy na živé ukázky.
Užíváte-li nějakou cizí knihovnu, ukažte odpovídajícím, kde jste ji vzali.

Užitečné odkazy:

Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: