2008-12-12 129 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> 
';