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

3 回答 3

1

您在onclick='MyFunction('myParameter');'. 改用转义双引号:

onclick=\"MyFunction('myParameter');\"
于 2012-05-08T09:22:45.373 回答
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>");
于 2012-05-08T09:22:53.763 回答
1

您对 JSON 的提及是一个红鲱鱼。

看代码。我已经标记了属性值的开始和结束:

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

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

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

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

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

不过一般来说,您应该完全避免内在的事件属性,而改用 JavaScript 事件绑定(通常使用事件委托,因此您无需在每次向 DOM 添加新元素时都绑定事件)。

于 2012-05-08T09:24:04.093 回答