1

使用:

$.ajaxSetup({
    dataFilter: function(data, type) {
        if (type === 'json') {
            data.replace('for (;;);', '');
            return JSON.parse(data);
        }

        return data;
    }
});

为无法解析的垃圾处理 json - for(;;); - 用于 json 安全性:http: //labs.adobe.com/technologies/spry/samples/data_region/JSONParserSample.html

但我想做的是让 .ajax 函数检查 json 是否具有无法解析的残渣,如果是,则替换它并返回它,否则就返回它。

这样,我可以在整个站点中重用该功能 - 一些 json 将具有杂乱无章,而另一些则不会。

4

1 回答 1

1

您的 dataFilter 不工作的唯一原因是该.replace方法不能在字符串上就地工作;您必须将结果返回到新字符串,或将字符串重新分配给其替换方法的输出。

$.ajaxSetup({
    dataFilter: function(data, type) {
        if (type === 'json') {
            data = data.replace('for (;;);', '');
            return JSON.parse(data);
        }

        return data;
    }
});
于 2012-04-26T20:32:28.837 回答