1

AJAX クエリから JSON データを読み込んでいます。

       $.ajax({'url': url, type: params.method, 'data': data, timeout: this.settings.timeout, success: function(d,a,x){
                console.log('request Complete',params.endpoint,params.params);
                var json = null;
                try {
                    json = JSON.parse(d);
                } catch(e) {
                    console.error(e);
                }
                console.log('json');

                // omitted for brevity...
            }
        });

最後の console.log が「request Complete」(エラーまたは 2 番目のログが表示されない) である chrome で、「Aw, Snap」クラッシュが時折見られます。

データが大きくなる可能性があることに注意することが重要だと思います (場合によっては最大 15Mb になる)。そのためd、すべてのリクエストで出力して、不正な形式の JSON を探しているわけではありません (まだ...その結果になる可能性があります)。 . $.parseJSONFWIW、代わりに試してみましたJSON.parse

「Aw、Snap」エラーについて私が行った調査は、せいぜいあいまいです。私の推測では、これは OOM です。残念ながら、結果セットのフットプリントを減らすためにできることはあまりありません。

少なくとも、優雅に失敗する方法はありますか?

4

2 に答える 2

2

dataTypeプロパティを介して応答データがJSONであるとjQueryに伝えるとどうなりますか?そうすることで、jQueryが事前に解析し、データを提供するだけです。あなたが何が起こっているかについて正しければ、これもクラッシュを引き起こす可能性があるようです。ただし、jQueryは解析前にいくつかの健全性チェックを実行します。

$.ajax({
    url: url,
    type: params.method,
    data: data,
    dataType: 'json',
    timeout: this.settings.timeout,
    success: function (d, a, x){
        // `d` should already be parsed into an object or array, and ready to use
    }
});

それでも問題が解決しない場合は、実際のJSON応答を投稿してください。

于 2013-02-15T17:02:11.017 に答える