Autor | Zpráva | ||
---|---|---|---|
rtb Profil * |
#1 · Zasláno: 25. 5. 2014, 11:54:13
Ahoj,
můžu poproti o radu? přes jQuery getScript provádím na základě formulářových událostí provádění dalšího javascriptu. To funguje v pořádku. Zabrzdil jsem však v této situaci: $h = "<td>Možnosti</td><td><select name='x{$_GET[m]}-{$_GET[a]}' onchange='$.getScript(\"/typing.php?m=2&a={$_GET[a]}2&v=\"+$( this ).val());'><option>- vyberte</option>"; $( '#<?php echo $_GET[a]; ?>' ).html( "<?php echo $h; ?>" ); Problém je v tom zvýrazněném zápisu. Je tam už moc uvozovek, máme je špatně slashované. Jak prosím toto větvení správně slashovat, aby to fungovalo? Díky :) |
||
Joker Profil |
#2 · Zasláno: 25. 5. 2014, 12:18:51
rtb:
Konečný JS je uzavřený v uvozovkách: .html("…") , takže uvozovky v něm musejí být escapované jako \" . Takže výstup z PHP nemá být " , ale \" . To se v PHP napíše jako \\\" .
Problém se zanořováním uvozovek lze zmírnit použitím HEREDOC syntaxe pro řetězce s HTML kódem (což odstraní jednu úroveň uvozovek): $h = <<<KOD <td>Možnosti</td> <td><select name='x{$_GET[m]}-{$_GET[a]}' onchange='$.getScript(\\"/typing.php?m=2&a={$_GET[a]}2&v=\\"+$( this ).val());'><option>- vyberte</option> KOD; (zrovna v tomto kódu stále je \\" , protože výstupem má být \" )
|
||
rtb Profil * |
#3 · Zasláno: 25. 5. 2014, 12:52:20
Joker:
Díky, to je ono! |
||
Chamurappi Profil |
#4 · Zasláno: 25. 5. 2014, 14:51:56
Reaguji na rtba:
Nebylo by hezčí zavolat z onchange funkci a té předat v argumentech to, co je specifické? Případně si to vytáhnout z nějakého atributu?
<select a="{$_GET[a]}" onchange="zpracujA(this)"> zpracujA si pak vzít getAttribute("a") a zapojit si ho do řetězce bez uvozovkových orgií…
Jinak také v událostech zapsaných v HTML atributech jdou používat HTML entity, takže uvozovka tam jde zapsat jako " .
|
||
Časová prodleva: 10 let
|
0