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 に答える