82 votes

Fonction de réponse d'erreur jQuery .get?

Grâce à StackOverflow, j'ai réussi à obtenir le code suivant fonctionne parfaitement, mais j'ai une question de suivi.

$.get('http://example.com/page/2/', function(data){ 
  $(data).find('#reviews .card').appendTo('#reviews');
});

Le code ci-dessus a permis à mon site pour aller chercher une deuxième page des articles avec une Charge Plus de bouton dans WordPress. Toutefois, lorsque le site est à court de pages/résultats, je suis confronté à un petit problème. La charge plus le bouton en place. Il va continuer d'essayer de récupérer les données même si pas de pages restantes.

Comment puis-je ajuster cette commande afin que je puisse montrer un visuel de réponse si l' .get demande échoue ou est un (404) ne trouve pas la page par exemple?

Si quelqu'un pouvait m'aider avec un exemple simple de même un alert("woops!"); ce serait génial!

Merci!

195voto

lonesomeday Points 95456

$.get ne vous donne pas la possibilité de définir un gestionnaire d'erreur. Vous aurez besoin d'utiliser le bas niveau $.ajax plutôt:

$.ajax({
    url: 'http://example.com/page/2/',
    type: 'GET',
    success: function(data){ 
        $(data).find('#reviews .card').appendTo('#reviews');
    },
    error: function(data) {
        alert('woops!'); //or whatever
    }
});

Edit Mars '10

Notez qu'avec le nouveau jqXHR objet jQuery 1.5, vous pouvez définir un gestionnaire d'erreur après l'appel de $.get:

$.get('http://example.com/page/2/', function(data){ 
    $(data).find('#reviews .card').appendTo('#reviews');
}).fail(function() {
    alert('woops'); // or whatever
});

34voto

Nick Craver Points 313913

Si vous voulez une erreur générique, vous pouvez configurer tous $.ajax() (qui $.get() utilise dessous) les demandes de jQuery permet d'afficher une erreur à l'aide de $.ajaxSetup(), par exemple:

$.ajaxSetup({
  error: function(xhr, status, error) {
    alert("An AJAX error occured: " + status + "\nError: " + error);
  }
});

Il suffit d'exécuter cette fois avant de faire des appels AJAX (aucune modification de votre code, il suffit de coller ce avant, quelque part). Ceci définit l' error option par défaut pour le gestionnaire d'/fonction ci-dessus, si vous faites un plein $.ajax() appel et spécifié l' error gestionnaire alors que ce que vous aviez l'emporterait sur la ci-dessus.

14voto

Hiral Points 295

Vous pouvez obtenir une erreur de détail en utilisant la propriété responseText.

 $.ajaxSetup({
error: function(xhr, status, error) {
alert("An AJAX error occured: " + status + "\nError: " + error + "\nError detail: " + xhr.responseText);
     } 
    });
 

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X