| 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: 12 let
|
|||
0