example - jquery ajax json
OpciĆ³n de error JQuery en la utilidad $.ajax (5)
¿Estás seguro de que la respuesta es correcta? El error de análisis significa que hay algo incorrecto con los datos que se evalúan en la línea var t = eval( "(" + request + ")" ) ;
La documentación indica que la función error: opción estará disponible: instancia XHR, cadena de mensaje de estado (en este caso siempre error) y un objeto de excepción opcional devuelto de la instancia XHR (Libro: JQuery en Acción)
Usando lo siguiente (en la llamada $ .ajax) pude determinar que tenía un error "parsererror" y un "timeout" (desde que agregué el tiempo de espera: opción)
error: function(request, error){}
¿Qué otras cosas evalúa en la opción de error? ¿Incluyes el objeto de excepción opcional?
EDIT: una de las respuestas indica todos los errores de retorno ... aprender más acerca de lo que es de valor (para la depuración) en la instancia XHR y objeto de excepción sería útil
Esta es una llamada completa de $ .ajax:
$.ajax({
type: "post",
url: "http://myServer/cgi-bin/broker" ,
dataType: "text",
data: {
''_service'' : ''myService'',
''_program'' : ''myProgram'',
''start'' : start,
''end'' : end
},
beforeSend: function() {
$("#loading").removeClass("hide");
},
timeout: 5000,
error: function(request,error) {
$("#loading").addClass("hide");
if (error == "timeout") {
$("#error").append("The request timed out, please resubmit");
}
else {
$("#error").append("ERROR: " + error);
}
},
success: function(request) {
$("#loading").addClass("hide");
var t = eval( "(" + request + ")" ) ;
} // End success
}); // End ajax method
Gracias por el aporte
Al mirar el código fuente de jQuery, hay cuatro estados devueltos, además del éxito :
- tiempo de espera : cuando se excede el tiempo de espera especificado
- error - error http, como 404
- no modificado: cuando el recurso solicitado no se modificó desde la última solicitud
- parsererror - cuando una respuesta xml / json es mala
El segundo argumento que se pasa a su función de error será la cadena "timeout" "parserror" "error" o "notmodified". El tercero será el objeto de excepción. Este objeto puede ser útil para la depuración.
Esto es un lado, pero creo que hay un error en el código que enviaste. La línea:
if (error = "timeout") {
debería tener más signos iguales en él:
if (error == "timeout") {
Encuentro que la solicitud es más útil que el error.
error:function(xhr,err){
alert("readyState: "+xhr.readyState+"/nstatus: "+xhr.status);
alert("responseText: "+xhr.responseText);
}
xhr es XmlHttpRequest.
Los valores de readyState son 1: carga, 2: cargado, 3: interactivo, 4: completo .
el estado es el número de estado HTTP, es decir, 404: no encontrado, 500: error del servidor, 200: ok .
responseText es la respuesta del servidor: puede ser texto o JSON del servicio web o HTML del servidor web.