Estoy haciendo algunas solicitudes GET a una aplicación de App Engine, probando en Chrome. Aunque puedo ver en la consola de JavaScript que algunas llamadas dan como resultado un error de 500 servidores, parece que no puedo encontrar la forma de capturar este error en mi código jQuery a pesar de haber leído varios hilos SO similares. Entiendo que indica un error del lado del servidor, pero aún me gustaría poder capturar un error de mi javascript.jquery ajax ignora el error de estado 500
Necesito capturar el error para poder contar el número de respuestas (satisfactorias o no) y activar otra función cuando se hayan recibido todas las respuestas de llamada.
Chrome salida de la consola:
GET http://myapp.com/api?callback=jQuery12345¶ms=restOfParams 500 (Internal Server Error)
Mi llamado:
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);
}
},
});
}
}
he probado algunos de los siguientes:
Adición:
statusCode: {500: function() {alert('err');}}
a la llamada.
Usando:
$().ready(function(){
$.ajaxSetup({
error:function(x,e) {
if(x.status==500) {
alert('Internel Server Error.');
}
}
});
});
qué alguien tiene alguna sugerencia concerniente a cómo podría atrapar la respuesta 500?
Gracias Oli
ACTUALIZACIÓN:
Basándose en las respuestas, mi código jQuery parece ser correcta, pero por alguna razón que sólo coger ciertos 500 respuestas recibidas de mi aplicación. Posiblemente este sea un problema con la forma en que App Engine devuelve el error (no sé mucho sobre esto), o cómo jquery maneja los errores con jsonp; este punto se trata brevemente en el último párrafo del artículo this.
Lo hice funcionar usando jquery-isonp que capturó los 500 estados lanzados por la aplicación.
¿No debería ser 'statusCode' en lugar de' status'? –