web-dev-qa-db-fra.com

Comment intercepter une erreur dans la méthode load () de jQuery

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

Une fois le chargement terminé, j’affiche le résultat dans un <div>.

Le problème est que, 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()?

48
M Aung

load () documentation.

Juste un peu de contexte 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 chemin autre que le chemin racine, comme demandé par les commentaires.

74
cgp

En plus de rappeler la fonction load () comme le suggère Ólafur Waage, vous pouvez également enregistrer des gestionnaires d’erreur globaux (globaux comme globaux pour tous les appels ajax de la page).

Il existe au moins deux méthodes pour enregistrer les gestionnaires d'erreur Ajax globaux:

Enregistrez uniquement le gestionnaire d'erreurs avec ajaxError() :

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

Ou utilisez ajaxSetup() pour configurer un gestionnaire d’erreurs et d’autres propriétés en même temps:

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

load () offre un rappel.

Rappeler.
La fonction appelée lorsque la demande ajax est terminée (pas nécessairement le succès). 

C’est comme ça que l’IIRC a été fait. (je ne l'ai pas testé)

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

Electric toolbox contient un article intitulé "Chargement de contenu avec jQuery AJAX et traitement des échecs" qui semble répondre à votre question.

Apparemment, la fonction de rappel que vous spécifiez reçoit la réponse, le statut et l'objet XmlHttpRequest, vous permettant de déterminer le statut de votre demande ajax et de gérer la condition en conséquence.

0
vezult