Я делаю несколько запросов GET к приложению App Engine, тестирую в Chrome.Хотя в консоли javascript я вижу, что некоторые вызовы приводят к ошибке сервера 500, я, похоже, никак не могу зафиксировать эту ошибку в своем коде jQuery, несмотря на чтение ряда подобных потоков SO.Я понимаю, что это указывает на ошибку на стороне сервера, но я все же хотел бы иметь возможность зафиксировать такую ошибку из моего 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 - этот момент кратко обсуждается в последнем абзаце статьи этой .
Я заставил это работать с помощью jquery-isonp , который перехватил все 500 статусов, выданных приложением.