2010-10-31 3 views
49

Grâce à StackOverflow, j'ai réussi à faire fonctionner parfaitement le code suivant, mais j'ai une question de suivi.jQuery .get fonction de réponse d'erreur?

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

Ce code ci-dessus a permis mon site pour aller chercher une deuxième page d'articles avec un chargement bouton Plus dans WordPress. Cependant, lorsque le site est à court de pages/résultats, je suis confronté à un petit problème. Le bouton charger plus reste en place. Il continuera à essayer d'extraire des données même s'il ne reste aucune page.

Comment est-ce que je peux tordre cette commande de sorte que je puisse montrer une réponse visuelle si la demande .get échoue ou est une page (404) non trouvée par exemple?

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

Merci!

+0

.ajaxSetup $ Fonction Works comme un charme, son la meilleure option pour obtenir $ - http://stackoverflow.com/questions/2175756/how-to-handle-error-in-get – BetaCoder

Répondre

133

$.get ne vous donne pas la possibilité de définir un gestionnaire d'erreurs. Vous aurez besoin d'utiliser la fonction de bas niveau $.ajax à la place:

$.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 
    } 
}); 

Modifier Mars '10

Notez que le nouvel objet jqXHR dans jQuery 1.5, vous pouvez définir un gestionnaire d'erreur après avoir appelé $.get:

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

Vous n'avez pas Pour ce faire, il existe d'autres alternatives avec '$ .ajaxSetup()' et l'événement global 'ajaxError'. –

+0

En effet il y a. – lonesomeday

+0

cette solution est plus intuitive –

30

Si vous voulez une erreur générique vous pouvez configurer tout de $.ajax() (qui $.get() utilise dessous) demande jQuery permet d'afficher une erreur en utilisant $.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 une demande AJAX (aucune modification à votre code actuel, il suffit de coller ça avant quelque part) . Cela définit l'option error à par défaut au gestionnaire/fonction ci-dessus, si vous avez effectué un appel $.ajax() complet et spécifié le gestionnaire error, alors ce que vous avez eu remplacerait ce qui précède.

+0

Ne fonctionne pas, je reçois cette alerte: Une erreur AJAX est survenue: erreur Erreur: –

11

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); 
    } 
    }); 
+0

Fonctionne également pour Jquery 3.1.x – keesp