php引用问题

时间:2008-12-12 17:22:18

标签: php

我有这个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?

5 个答案:

答案 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>
';