我有这个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?
答案 0 :(得分:2)
你应该html encode:
echo '<a href="#" onclick="updateByQuery(\'Layer3\', ' . htmlentities(json_encode($query)) . ');">Link 1</a>';
您也可以使用htmlspecialchars
答案 1 :(得分:1)
echo "<a href='#' onclick='updateByQuery(\"Layer3\", \"" . json_encode($query) . "\");'>Link 1</a>";
这会产生:
<a href='#' onclick='updateByQuery("Layer3", "Ed Hardy");'>Link 1</a>
答案 2 :(得分:0)
尝试反向...使用html的单引号和javascript的双引号。事实就是我们这样做的。
答案 3 :(得分:0)
echo "<a href='#' onclick='updateByQuery(\"Layer3\", " . json_encode($query) . ");'>Link 1</a>";
答案 4 :(得分:0)
引用是内联处理程序的问题。正如RoBerg所说,你需要在文本中使用htmlentities。
另一种方法是使用钩子方法和匿名函数,而不是内联处理程序。
echo '
<a href="#" id="link_1">Link 1</a>
<script>document.getElementById("link_1").onclick =
function() { updateByQuery("Layer3", '.json_encode($query).'); }
</script>
';