我创建了这个对象,我将其转换为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 :(得分: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("myParameter");'>
一般而言,您应该完全避免使用内部事件属性,而是使用JavaScript事件绑定(通常使用事件委派,因此每次向DOM添加新元素时都不需要绑定事件)。