0

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

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

这是示例:http: //jsfiddle.net/dCtA3/2/

当我删除 javascript: http://jsfiddle.net/dCtA3/3/它工作。

4

2 回答 2

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;
}​

[根据评论编辑
] 看到这个 jsfiddle,其中在按钮单击时模拟 json 请求。单击按钮后会显示字符串化的响应对象。

于 2012-09-02T09:24:15.580 回答
0

你需要生成你的javascript代码吗?它必须在那个字符串中吗?如果 javascript 可以在您的 js 文件中,您可以简单地执行以下操作:创建一个执行警报的函数 helloWorld,并在您的 json 字符串中使用 html hance onclick="helloworld()"。

于 2012-09-02T09:07:57.913 回答