逃避报价问题

时间:2012-05-08 09:19:21

标签: javascript quotes

在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}

3 个答案:

答案 0 :(得分:1)

onclick='MyFunction('myParameter');'中的引号嵌套错误。改为使用转义双引号:

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

答案 1 :(得分:1)

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

“onclick”中有单引号,但“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>");

答案 2 :(得分:1)

你提到JSON是一个红鲱鱼。

查看代码。我已经标记了属性值的开头和结尾:

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

您需要使用不同的引号,这些引号必须进行转义,因为它们位于由该类型的引号分隔的PHP字符串中:

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

...或者您需要使用HTML实体:

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

一般而言,您应该完全避免使用内部事件属性,而是使用JavaScript事件绑定(通常使用事件委派,因此每次向DOM添加新元素时都不需要绑定事件)。