最近、私は、サーバーからjsonレスポンスをロードするスクリプトの問題に直面しました。私はjQuery.ajax()を使ってajax呼び出しを行っています。コードスニペットはそうです -jquery.ajaxを使用して大規模なjsonレスポンスを一貫して読み込むことができない
var request = $.ajax({
url: "script.jsp",
type: "POST",
dataType: "json",
success: function(response) {
console.log(response);
},
error: function(response, error) {
console.log(response, error);
}
});
私はこのスクリプトが昨日ほど近かったと言いました。私は、サーバー側のコードまたはフロントエンドのコードを変更していません。 jsonのレスポンスは、サイズが〜1 MBと少し大きめです。しかし、私はjson出力を使って -
python -mjson.tool < output.json
を正しく検証しました。好奇心が強いのはFF &クロムの違いです。
FFでは、Firebugを開いて、作成中のajaxリクエストを確認します。私は要求が約300msで提供されているが、コンソールのリンクの横にあるローディングホイールはまだ20秒間アニメートしていることがわかります。その後、jsonレスポンスが適切に処理され、その結果がページに表示されます。 IEでも同様の動作、20秒後にjsonの適切な処理。
Chromeでは、約20秒間何も起こりません。その後、コンソールにエラー"error": undefined
またはFailed to load resource
のいずれかが表示されます。私は別のブラウザでこの奇妙な振る舞いを理解しない
POST script.jsp
f.support.ajax.f.ajaxTransport.sendjquery.min.js:4
f.extend.ajaxjquery.min.js:4
DataTableWidget.extend._fetchBuildingBlockItemsPermissionBBItemsWidget.js:91
(anonymous function)PermissionBBItemsWidget.js:83
e.extend.eachjquery.min.js:2
DataTableWidget.extend._loadDataPermissionBBItemsWidget.js:82
DataTableWidget.extend.showPermissionBBItemsWidget.js:15
(anonymous function)permission-building-blocks.html:451
xLAB.min.js:5
ULAB.min.js:5
jLAB.min.js:5
ILAB.min.js:5
eLAB.min.js:5
a.onload.a.onreadystatechange
- あるいは、それはまた、以下のスタックトレースを出力します。サーバー側のコードは、高速応答を返す
- - だから、本質的に、私はことを確認して作られました。私はいくつかのデバッグステートメントを入れて、サーバーログを見た。レスポンス・フォーム・サーバは500ms以上はかかりません。
- jsonが正しく検証されていることを確認しました。 20秒後にIE & FFで処理されても何の問題もないという事実はその証拠です。 Pythonのjson.toolの使用に加えて。
- ので問題上の任意のポインタが大きな助けになります
をJSONにデータ型を設定します。ありがとう。
更新 私が気づいたもう1つ興味深いこと。リクエストが処理されている間に、元のリクエストから3秒以内にリフレッシュボタンを押すと、プロセスはすぐに完了します。私が1秒後に経過時間のビューの変化を見ると、リフレッシュイベントのためにページが消去されます。
更新2 大きなレスポンスをアルファベットでスライスした後で気づいたことがあります。ルーオン対応の問題は、特定のレスポンスでのみ発生します。私はこの長い応答ファイルをhttp://jsonformatter.curiousconcept.com/#jsonformatterで実行しましたが、すぐにjosnが有効であると返信しましたが、実際には応答を印刷するのに20秒以上かかります。私は問題が\u0026
のような特定の文字のために起こっていると思うので、この情報を追加すると、どのように問題を解決できますか? Here is the snipet of the problematic json.
おそらく需要に基づいてそのデータの一部を供給することを検討する時間?? – charlietfl
@charlietfl私はそれについて考えましたが、なぜそれが昨日ではなく今日では動作するのか理解できません。また、私は他のページにも、全く問題のない同等の要求を出しています。 – Chantz