2009-04-15 22 views
40

Estoy utilizando el método .load() de jQuery para recuperar algunos datos cuando un usuario hace clic en un botón.Cómo detectar el error en el método load() de jQuery

Después de que la carga termine con éxito, muestro el resultado en un <div>.

El problema es que a veces se produce un error en load() al recuperar los datos.

¿Cómo puedo detectar un error en load()?

Respuesta

5

carga() ofrece una devolución de llamada.

Devolución de llamada.
La función llamada cuando la solicitud de ajax está completa (no necesariamente exitosa).

Así es como se hace IIRC. (No lo he probado)

$("#feeds").load("feeds.php", {limit: 25}, 
    function (responseText, textStatus, XMLHttpRequest) { 
     // XMLHttpRequest.responseText has the error info you want. 
     alert(XMLHttpRequest.responseText); 
}); 
+7

El primer argumento de la función IS responseText. No es necesario usar XMLHttpRequest.responseText ... –

10

Además de pasar una devolución de llamada a la función load() como se sugiere Ólafur Waage, también puede registrar manejadores de errores "global" (global como en el global para todas las llamadas ajax en la página)

Hay al menos dos formas de registrar manejadores globales error de Ajax:

Registro sólo el controlador de errores con ajaxError():

$.ajaxError(function(event, request, settings) { 
     alert("Oops!!"); 
}); 

O bien, utilizar ajaxSetup() para configurar un controlador de errores y otras propiedades en al mismo tiempo:

$.ajaxSetup({ 
    timeout: 5000, 
    error: function(event, request, settings){ 
     alert("Oops!"); 
    } 
}); 
66

load() documentation.

Sólo un poco de historia sobre cómo se produce un error de carga ...

$("body").load("/someotherpath/feedsx.pxhp", {limit: 25}, 
    function (responseText, textStatus, req) { 
     if (textStatus == "error") { 
      return "oh noes!!!!"; 
     } 
}); 

Editar: Se ha añadido una ruta distinta de la ruta raíz de lo solicitado por los comentarios.

+0

gracias altCongnito.it funciona! por cierto, ¿puedo hacer otra pregunta relacionada? ¡Otro problema es la ruta del archivo! Yo uso asp.net. escribo el código de carga() en la página Maestra. parámetro Url es como feedsx.aspx. funciona cuando las páginas de contenido están en la carpeta raíz. Pero si las páginas de contenido están debajo de otra subcarpeta no funcionan. ayuda –

+0

gracias por el enlace a los documentos de jquery. ¡No sabía que existían! –

+0

Gracias: las fallas de carga se deben principalmente a un problema al cargar la página de destino. – Resh32

0

Caja de herramientas eléctrica tiene un artículo llamado "Loading content with jQuery AJAX and dealing with failures" que parece responder a su pregunta.

Aparentemente la función de devolución de llamada que especifique obtiene la respuesta, el estado y el objeto XmlHttpRequest, lo que le permite determinar el estado de su solicitud ajax y manejar la condición en consecuencia.