2008-12-12 72 views
0

我有这样的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的结果周围生成单引号,在这种情况下,

回答

0

尝试做相反的事情...使用单引号的html和双引号的javascript。事实就是这样。

+0

我不确定如何修改回声线以起诉两者,因为我必须在JavaScript函数周围使用双引号。我只是逃避他们? – 2008-12-12 17:25:59

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

修复了你的格式 - 你需要选择它并点击代码示例(二进制图标)按钮 – Greg 2008-12-12 17:31:37

+0

@Roborg;这产生: Link 1 请注意Ed Hardy周围没有引号。 – cLFlaVA 2008-12-12 18:25:21

2

你应该html encode它:

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

您也可以使用htmlspecialchars

+0

生成“而不是”实际上打破它 – 2008-12-12 17:35:12

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

这将产生:

<a href='#' onclick='updateByQuery("Layer3", "Ed Hardy");'>Link 1</a> 
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> 
';