Input mező > javascript változó > php változó
A kérdésem a következő lenne: van egy formom, abban mondjuk van egy input mezőm, amibe egy nevet, vagy egy címet írhatok (tartalmazhat szóközöket, speciális jeleket...). Hogy tudom ezt átvinni javascriptbe egy submit alkalmával? És ha ez megvan, még mindig ott a kérdés, hogy innen hogyan tudom felhasználni egy, az XMLHttpRequest által meghívott fájlban, mint PHP változó?
Ha valakinek van valami jó ötlete, az érdekelne. Az nem megoldás itt, hogy egy URL-paraméterben (script.php?input=Szöveg) viszem át, mert a különleges karaktereket nem minden böngésző kezeli jól.
■ Ha valakinek van valami jó ötlete, az érdekelne. Az nem megoldás itt, hogy egy URL-paraméterben (script.php?input=Szöveg) viszem át, mert a különleges karaktereket nem minden böngésző kezeli jól.
escape()
Azt tudom ajánlani, próbálkozz ezzel:
Az escape Latin 1-re van kitalálva, úgyhogy az őűŐŰ problémát fog jelenteni. Az escape("őűŐŰ") eredménye: "%u0151%u0171%u0150%u0170". Ezt a php nem dekódolja alapból. Ha csak magyar karaktereket vársz egy egyszerű str_replace lesz a neked való megoldás. Ha totál nemzetközire szeretnéd, akkor nézd át a php multibyte string funkcióit.
nem URL
iframe
encodeURIComponent
A következő kis progi érzékelteti a problémát, plusz megmutatja a helyes megoldást is:
(
[escape] => öüó%u0171%u0151úéáíÖÜÓ%u0170%u0150ÚÉÁÍ
[encodeURIComponent] => +ÜßóŹĹ�úÊåĂĂ�Ă�Ă�Ĺ°Ĺ�Ă�Ă�Ă�Ă�
)
+öüóűőúéáíÖÜÓŰŐÚÉÁÍ
Mint látható az encodeURIComponent függvény azt csinálja, amire szükségünk van. Ha az oldal UTF-8 kódolást használ, akkor az iconv nem is kell. Amire még érdemes lehet figyelni, hogy ez a függvény nem kódolja be a ~'(*)! karaktereket, bár ez többnyire nem gond.
Üdv,
Felhő
Nice
Amúgy érdkes, hogy a böngésző az összes ékezetes karaktert elkódolta.