Autor Zpráva
rtb
Profil *
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
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 *
Joker:
Díky, to je ono!
Chamurappi
Profil
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)">
A ve funkci 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 &quot;.

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:

0