2012-05-08 221 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添加新元素时都不需要绑定事件)。