У меня есть этот PHP-код
echo '<a href = "#" onclick = "updateByQuery(\'Layer3\', ' . json_encode($query) . ');">Link 1</a>';
который генерирует ссылку, подобную этой:
<a href = "#" onclick = "updateByQuery('Layer3', "Ed Hardy");">Link 1</a><li>Link 2</li>
Причинение того, что javascript не вызывается. Как мне заставить его генерировать одинарные кавычки вокруг результата $ query, в данном случае ed hardy?






Попробуйте сделать наоборот ... используйте одинарные кавычки для html и двойные кавычки для javascript. Вот как мы это делаем на самом деле.
echo "<a href='#' onclick='updateByQuery(\"Layer3\", " . json_encode($query) . ");'>Link 1</a>";
Исправлено форматирование для вас - вам нужно выбрать его и нажать кнопку Code Sample (двоичный значок)
@Roborg; это дает: <a href='#' onclick='updateByQuery("Layer3", Эд Харди);'> Ссылка 1 </a> Обратите внимание, что вокруг Эда Харди нет цитат.
Вы должны html кодировать это:
echo '<a href = "#" onclick = "updateByQuery(\'Layer3\', ' . htmlentities(json_encode($query)) . ');">Link 1</a>';
Вы также можете использовать htmlspecialchars
который производит "вместо", что фактически нарушает его
Эээ нет, & quot; это то, что вы хотите, и исправлю это за вас.
@ Joshxtothe4, & quot; преобразуется браузером в "до того, как попадет в синтаксический анализатор Javascript.
echo "<a href='#' onclick='updateByQuery(\"Layer3\", \"" . json_encode($query) . "\");'>Link 1</a>";
Это производит:
<a href='#' onclick='updateByQuery("Layer3", "Ed Hardy");'>Link 1</a>
Недействительный XHTML, но я не буду -1, потому что он, кажется, хочет HTML.
Цитаты - проблема встроенных обработчиков. Как говорит Роберг, в тексте нужно использовать htmlentities.
Другой способ обойти это - использовать методы перехвата и анонимные функции, а не встроенные обработчики.
echo '
<a href = "#" id = "link_1">Link 1</a>
<script>document.getElementById("link_1").onclick =
function() { updateByQuery("Layer3", '.json_encode($query).'); }
</script>
';
Я не уверен, как изменить строку эха, чтобы предъявить иск обоим, так как у меня должны быть двойные кавычки вокруг функции JavaScript. Я просто убегу от них?