Autor | Zpráva | ||
---|---|---|---|
deter Profil |
#1 · Zasláno: 23. 6. 2008, 20:06:24
Zdravím,
využívám AJAX ve svém diskusním fóru k možnosti náhledu napsaného příspěvku. JS fci předávám obsah elementu textarea, který pak posílám jednomu php scriptu ke zpracování. Předání se děje takto: prispevek="text="+document.prispevek_form.text.value; kde text je pak v php scriptu bráno jako proměnná s obsahem document.prispevek_form.text.value (což je samozřejmě příspěvek, jehož náhled chci uživateli zobrazit). Problém je v tom, že pokud text obsahuje znak &, tak ho JS použije jako řídící znak, což v tomto je oddělovač proměnných předávaných PHP skriptu. Př.: tento text: Ahoj, právě jsem použil znak &, který dělá neplechu by pak PHP skript přijal asi jako: $prispevek="Ahoj, právě jsem použil znak" $,který jistě, je to nesmysl, ale snad chápete, jak jsem to myslel. V náhledu se tedy objeví pouze text, který byl napsán před ampersandem, zbytek nikoliv. Dotaz: Jak zbavit ampersand jeho řídící funkce? Můžu ho nějak escapovat? |
||
panther Profil |
#2 · Zasláno: 23. 6. 2008, 20:07:36
deter
& ? |
||
deter Profil |
#3 · Zasláno: 23. 6. 2008, 20:13:21
v &, jak jistě vidíš, se ten znak & vyskytuje taktéž, takže to řešení není
|
||
Měsíček Profil |
#4 · Zasláno: 23. 6. 2008, 20:16:43
& => %26
nebo normální escape .. \& |
||
deter Profil |
#5 · Zasláno: 23. 6. 2008, 20:18:55
Měsíček Jsem docela JS začátečník, můžeš poradit, jak mam ten ampersand nahradit escapovanym & ? Zkoušel jsem string.replace(); ale neúspěšně
|
||
Měsíček Profil |
#6 · Zasláno: 23. 6. 2008, 20:22:28
Tohle nejspíše není až tak úplně ono, ale mohlo by tě to navést na správné řešení.
http://cicinovo.misto.cz/_MAIL_/javascript/methods/escape.html |
||
deter Profil |
#7 · Zasláno: 23. 6. 2008, 20:23:38
Měsíček
nakopl jsi mě správným směrem a já se konečně naučil používat replace(); prispevek=prispevek.replace(/&/,'%26'); a je vyřešeno, díky :) |
||
los Profil * |
#8 · Zasláno: 23. 6. 2008, 21:50:19
Keďže v POSTe sú hodnoty URL-zakódované, tak replace ampersandu je nedostatočný. Lepšie to bude takto:
prispevek = "text=" + encodeURIComponent(document.prispevek_form.text.value); |
||
peta Profil |
#9 · Zasláno: 24. 6. 2008, 07:51:08
los
Jestli ti ta funkce v prohlizeci funguje. A to nebyva zvykem krom escape :) http://www.volny.cz/peter.mlich/Pr/URLchars.htm |
||
los Profil * |
#10 · Zasláno: 24. 6. 2008, 08:13:14
> Jestli ti ta funkce v prohlizeci funguje. A to nebyva zvykem krom escape :)
Samozrejme, že funguje. Metódy escape a unescape nepracujú správne so znakmi mimo základnej ASCII sady a ich použitie je zavrhnuté. Ak chce niekto vyvíjať pre prehistorické prehliadače, tak táto funkcia bude to najmenej, čo mu nebude fungovať. V tom prípade si musí vývojár ošetriť funkčnosť v žiadaných verziách sám (alebo by musel v otázke explicitne uviesť, že chce podporovať staré verzie prehliadačov). |
||
Časová prodleva: 16 let
|
0