web-dev-qa-db-fra.com

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

La documentation indique que la fonction error: option 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 en action)

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

error: function(request, error){}

Quelles sont les autres choses que vous évaluez dans l'option d'erreur? incluez-vous l'objet d'exception facultatif?

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

Ceci 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 la contribution

34
Jay Corbett

En regardant le code source jQuery, il y a quatre statuts retournés, en plus de succès:

  • timeout - lorsque votre délai spécifié est dépassé
  • erreur - erreur http, comme 404
  • non modifié - lorsque la ressource demandée n'a pas été modifiée depuis la dernière demande
  • parsererror - quand une réponse xml/json est mauvaise
22
Zach

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 .
état est le numéro d'état HTTP, c'est-à-dire 404: introuvable, 500: erreur du serveur, 200: ok .
responseText est la réponse du serveur - cela peut être du texte ou du JSON du service Web, ou du HTML du serveur Web.

43
Matt

C'est un aparté, 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") {
4
davegurnell

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

1
Jataro

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

0
Tomasz Tybulewicz