序列化html标签内的javascript代码

时间:2012-09-02 09:03:55

标签: javascript json

我有一个ajax函数,它响应一个html标记的内容,作为一个json字符串,我将评估它是否有一个对象。

现在只要json字符串里面没有javascript,它就可以了。但是当我在字符串中包含一些简单的javascript时,当我尝试评估字符串时,我会得到Uncaught SyntaxError: Unexpected identifier,尽管我会逃避每个'"

以下是示例:http://jsfiddle.net/dCtA3/2/

当我删除javascript:http://jsfiddle.net/dCtA3/3/时,它可以正常工作。

2 个答案:

答案 0 :(得分:2)

尝试使用正确的JSON(如果您的XHR返回JSON,使用它,解析它,或检查浏览器是否已经为您解析它(应该是[response].innerhtml))。将您的jsfiddle代码更改为:

var contents = JSON.stringify(
  {innerhtml : "<p onclick=\"javascript:alert('hello world');\"> click me! </p>"}
);

function insertContent() {
    document.getElementById("container")
        .innerHTML = JSON.parse(contents).innerhtml;
}​

[根据评论编辑]
请参阅this jsfiddle,其中按钮点击模拟了json请求。单击按钮后会显示字符串化的响应对象。

答案 1 :(得分:0)

您是否需要生成javascript代码并且必须在该字符串中?如果javascript可以在你的js文件中,你可以简单地这样做: 创建一个执行警报的函数helloWorld,并在你的json字符串中使用html onclick =“helloworld()”。