2009-04-15 5 views
40

J'utilise la méthode .load() de jQuery pour récupérer des données lorsqu'un utilisateur clique sur un bouton.Comment intercepter une erreur dans la méthode loadQ de jQuery

Une fois la charge terminée avec succès, je montre le résultat dans un <div>.

Le problème est, parfois une erreur se produit dans load() lors de la récupération des données.

Comment puis-je détecter une erreur dans load()? Load() offre un rappel.

Répondre

5

Rappel.
La fonction appelée lorsque la requête ajax est terminée (pas nécessairement la réussite).

Voici comment c'est fait IIRC. (Ont pas testé)

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

Le premier argument de la fonction IS responseText. Pas besoin d'utiliser XMLHttpRequest.responseText ... –

10

Outre le passage d'un rappel à la fonction load() comme Ólafur Waage suggère, vous pouvez également enregistrer les gestionnaires d'erreur « globaux » (global comme dans global pour tous les appels ajax sur la page).

Il y a au moins deux façons d'enregistrer les gestionnaires d'erreur global Ajax:

enregistrer juste le gestionnaire d'erreurs avec ajaxError():

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

Ou, utilisez ajaxSetup() pour mettre en place un gestionnaire d'erreurs et d'autres propriétés à en même temps:

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

load() documentation.

Juste un peu de fond sur la façon dont une erreur de chargement se produit ...

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

Edit: Ajout d'un autre chemin que le chemin racine comme demandé par les commentaires.

+0

merci altCongnito.it c'est du travail! btw, puis-je poser une autre question connexe? un autre problème est le chemin du fichier! J'utilise asp.net. J'écris le code load() dans la page principale. Le paramètre Url est similaire à feedsx.aspx. c'est un travail quand les pages de contenu sont sous le dossier racine. Mais si les pages de contenu sont sous l'autre sous-dossier ne fonctionnent pas. aide –

+0

merci pour le lien vers les docs jquery. Je ne savais pas qu'ils existaient même! –

+0

Merci - les échecs de chargement sont principalement dus à un problème lors du chargement de la page cible. – Resh32

0

Boîte à outils électrique a un article appelé "Loading content with jQuery AJAX and dealing with failures" qui semble répondre à votre question. Apparemment, la fonction de rappel que vous spécifiez reçoit l'objet response, status et XmlHttpRequest, ce qui vous permet de déterminer l'état de votre requête ajax et de gérer la condition en conséquence.

Questions connexes