Chromeでテストして、AppEngineアプリにGETリクエストを送信しています。javascriptコンソールでは、一部の呼び出しで500サーバーエラーが発生することがわかりますが、同様のSOスレッドを多数読み取ったにもかかわらず、jQueryコードでこのエラーをキャプチャする方法を見つけることができないようです。サーバー側のエラーを示していることは理解していますが、JavaScriptからそのようなエラーをキャプチャできるようにしたいと思います。
エラーをキャプチャして、応答の数(成功したかどうかに関係なく)をカウントし、すべての呼び出し応答が受信されたときに別の関数をトリガーできるようにする必要があります。
Chromeコンソールの出力:
GET http://myapp.com/api?callback=jQuery12345¶ms=restOfParams 500 (Internal Server Error)
私の電話:
function makeCall() {
var count = 0;
var alldata = $('#inputset').val();
var rows = alldata.split('\n');
var countmatch = rows.length;
for (i=0;i<rows.length;i++) {
data["param"] = rows[i]["val"];
$.ajax({
url: apiUrl,
type: 'GET',
data: data,
dataType: 'jsonp',
error: function(){
alert('Error loading document');
count +=1;
},
success: function(responseJson) {
count +=1;
var res = responseJson.results;
if (count == countmatch) {
allDoneCallback(res);
}
},
});
}
}
私は次のいくつかを試しました:
追加:
statusCode: {500: function() {alert('err');}}
呼び出しに。
使用:
$().ready(function(){
$.ajaxSetup({
error:function(x,e) {
if(x.status==500) {
alert('Internel Server Error.');
}
}
});
});
500の応答をどのようにキャッチできるかについて誰かが提案を持っていますか?
ありがとうオリ
アップデート:
応答に基づくと、私のjqueryコードは正しいように見えますが、何らかの理由で、アプリから受信した特定の500の応答しかキャッチしません。これは、App Engineがエラーを返す方法(これについてはよくわかりません)、またはjqueryがjsonpでエラーを処理する方法に問題がある可能性があります-この点については、この記事の最後の段落で簡単に説明します。
アプリによってスローされた500のステータスすべてをキャッチするjquery-isonpを使用して、これを機能させました。