проблема цитирования php - PullRequest
0 голосов
/ 12 декабря 2008

У меня есть этот код 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. Как заставить его генерировать одинарные кавычки вокруг результата запроса $, в данном случае ed hardy?

Ответы [ 5 ]

2 голосов
/ 12 декабря 2008

Вы должны html кодировать it:

echo '<a href="#" onclick="updateByQuery(\'Layer3\', ' . htmlentities(json_encode($query)) . ');">Link 1</a>';

Вы также можете использовать htmlspecialchars

1 голос
/ 12 декабря 2008
echo "<a href='#' onclick='updateByQuery(\"Layer3\", \"" . json_encode($query) . "\");'>Link 1</a>";

Это производит:

<a href='#' onclick='updateByQuery("Layer3", "Ed Hardy");'>Link 1</a>
0 голосов
/ 15 декабря 2008

Кавычки - это проблема встроенных обработчиков. Как говорит Роберг, вам нужно использовать htmlentities в тексте.

Другой способ обойти это - использовать методы ловушек и анонимные функции, а не встроенные обработчики.

echo '
<a href="#" id="link_1">Link 1</a>
<script>document.getElementById("link_1").onclick =
       function() { updateByQuery("Layer3", '.json_encode($query).'); }
</script>
';
0 голосов
/ 12 декабря 2008
echo "<a href='#' onclick='updateByQuery(\"Layer3\", " . json_encode($query) . ");'>Link 1</a>";
0 голосов
/ 12 декабря 2008

Попробуйте сделать наоборот ... используйте одинарные кавычки для html и двойные кавычки для javascript. Вот как мы это делаем на самом деле.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...