34 votes

Option d'erreur JQuery dans l'utilitaire $.ajax

La documentation indique que la fonction optionnelle error : rendra disponible : une instance XHR, une chaîne de message d'état (dans ce cas, toujours une erreur) et un objet d'exception facultatif renvoyé par l'instance XHR (Livre : JQuery in Action).

En utilisant ce qui suit (dans l'appel $.ajax) j'ai pu déterminer que j'avais une erreur "parsererror" et une erreur "timeout" (puisque j'ai ajouté l'option timeout :)

error: function(request, error){}

Quels sont les autres éléments que vous évaluez dans l'option d'erreur ? Incluez-vous l'objet d'exception facultatif ?

EDIT : une des réponses indique toutes les erreurs de retour... il serait utile d'en savoir plus sur ce qui a de la valeur (pour le débogage) dans l'instance XHR et l'objet d'exception.

C'est un appel $.ajax complet :

$.ajax({
 type: "post",
 url: "http://myServer/cgi-bin/broker" ,
 dataType: "text",
 data: {
 '_service' : 'myService',
 '_program' : 'myProgram',
 'start' : start,
 'end' : end
 },
 beforeSend: function() {
  $("#loading").removeClass("hide");
 },
 timeout: 5000,
 error: function(request,error) {
  $("#loading").addClass("hide");
  if (error == "timeout") {
   $("#error").append("The request timed out, please resubmit");
  }
  else {
   $("#error").append("ERROR: " + error);
  }
  },
  success: function(request) {
   $("#loading").addClass("hide");
   var t = eval( "(" + request + ")" ) ;
  } // End success
}); // End ajax method

Merci pour votre contribution

43voto

Matt Points 778

Je trouve la demande plus utile que l'erreur.

error:function(xhr,err){
    alert("readyState: "+xhr.readyState+"\nstatus: "+xhr.status);
    alert("responseText: "+xhr.responseText);
}

xhr est XmlHttpRequest.
readyState Les valeurs sont 1:chargement, 2:chargé, 3:interactif, 4:complet .
statut est le numéro d'état HTTP, c'est-à-dire 404 : non trouvé, 500 : erreur de serveur, 200 : ok .
texte de la réponse est la réponse du serveur - il peut s'agir de texte ou de JSON provenant du service web, ou de HTML provenant du serveur web.

22voto

Zach Points 9869

En regardant le code source de jQuery, on constate qu'il y a quatre états retournés, en plus de succès :

  • délai d'attente - lorsque le est dépassé
  • erreur - erreur http, comme 404
  • non modifié - lorsque demandé la ressource n'a pas été modifiée depuis la dernière demande
  • erreur d'analyse - quand une réponse xml/json est mauvaise

4voto

davegurnell Points 206

C'est une parenthèse, mais je pense qu'il y a un bug dans le code que vous avez soumis. La ligne :

 if (error = "timeout") {

devrait avoir plus de signes égaux :

 if (error == "timeout") {

1voto

Jataro Points 1405

Le deuxième argument qui est passé à votre fonction d'erreur sera soit la chaîne "timeout" "parserror" "error" ou "notmodified". Le troisième argument sera l'objet exception. Cet objet peut être utile pour le débogage.

0voto

Tomasz Tybulewicz Points 2124

Êtes-vous sûr que cette réponse est correcte ? Une erreur d'analyse signifie qu'il y a un problème avec les données évaluées en ligne. var t = eval( "(" + request + ")" ) ;

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