2012-05-08 133 views
-1

在PHP我創建這個對象,我轉換成JSON和發送到客戶端JS:逃逸引號的問題

$arr = array("img"=>"http://www.myDomain.com/imgs/pic_1.jpg","data"=>"<p>This is a paragraph <a href='#' onclick='MyFunction('myParameter');'>My Link</a></p>"); 

我覺得我做錯了什麼加上引號(檢查函數調用),但在一旦在我的HTML中注入,MyFunction永遠不會被調用。在這種情況下,哪種方法可以避免引號?

編輯:這是產生的JSON:

{"img":"http:\/\/www.myDomain.com\/imgs\/pic_1.jpg","data":"<p>Paragraph: <a href='#' onclick='localFunction('parameter');'>Link<\/a><\/p>","length":2} 
+0

結果JS是怎麼樣的?你在做什麼數據? –

+0

什麼對象?這是一個數組。您還省略了最相關的一段代碼:JSON轉換。更不用說JSON不是JavaScript:它不能包含代碼。 –

+1

@DonCallisto:這沒有意義,也是錯誤的。 – Ashe

回答

1
<a href='#' onclick='MyFunction('myParameter');'> 

你裏面有「點擊」,而是「onclick」事件本身是分隔單引號單引號。

嘗試:

$arr = array("img"=>"http://www.myDomain.com/imgs/pic_1.jpg","data"=>"<p>This is a paragraph <a href='#' onclick=\"MyFunction('myParameter');\">My Link</a></p>"); 
1

您在onclick='MyFunction('myParameter');'有引號的錯誤嵌套。使用轉義雙引號代替:

onclick=\"MyFunction('myParameter');\" 
1

你JSON的一提的是紅鯡魚。

看看代碼。我已標記的屬性值的起點和終點:

onclick='MyFunction('myParameter');'> 
     ^  ^

你要麼需要使用不同的報價,這不得不進行轉義,因爲它們是由該類型的引號定界的PHP字符串中:

onclick='MyFunction(\"myParameter\");'> 

...或者你需要使用HTML實體:

onclick='MyFunction(&quot;myParameter&quot;);'> 

但是總的來說講,你笑uld完全避免了內部事件屬性,而是傾向於使用JavaScript事件綁定(通常使用事件委託,所以每次向DOM添加新元素時都不需要綁定事件)。