2008-09-18 10 views
33

La documentación indica que la función de error: opción pondrá a disposición: instancia XHR, una 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)

utilizando la siguiente (en la llamada $ .ajax) yo era capaz de determinar que tenía un "parsererror" y un "tiempo de espera" (ya que he añadido el tiempo de espera: opción) error

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 depuración) en la instancia XHR y objeto de excepción sería útil

Se trata de una completa $ llamada .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 la entrada

Respuesta

22

Mirando el código fuente jQuery, hay cuatro estados devueltos, en sirvieron a éxito:

  • tiempo de espera - cuando se excede el tiempo de espera especificado
  • error - http error, al igual que 404
  • notmodified - cuando se le solicite recurso no fue modificado desde la última solicitud
  • parsererror - cuando una respuesta XML/JSON es mal
+3

también cuando dataType: "json" y el json están incorrectamente formados –

+0

sí, eso también lo haría. editado – Zach

0

¿seguro que la respuesta es correcta? Parse error medio que hay algo mal con los datos que se evaluted en línea var t = eval("(" + request + ")") ;

+0

lo siento, mi pregunta no estaba clara. Trabajé en mis problemas de "parsererror" ... Me preguntaba qué otra información se puede determinar a partir del error: opción –

1

El segundo argumento que se pasa a la función de error o bien se la cadena "timeout" "parserror" "error" o "notmodified". El tercero será el objeto de excepción. Este objeto puede ser útil para la depuración.

+0

podría actualizar su respuesta para explicar la información de depuración útil que se puede obtener del objeto de excepción –

4

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 de igual en ella:

if (error == "timeout") { 
+0

buena captura, editó la publicación. Ha pasado un tiempo desde que publiqué esto, pero creo que fue solo un error tipográfico. Gracias por la respuesta –

43

encuentro la petición más útil que el error.

error:function(xhr,err){ 
    alert("readyState: "+xhr.readyState+"\nstatus: "+xhr.status); 
    alert("responseText: "+xhr.responseText); 
}

xhr es XmlHttpRequest.
readyState valores son 1: cargando, 2: cargado, 3: interactivo, 4: completo.
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.

+0

buena respuesta, gracias –

Cuestiones relacionadas