2012-05-30 5 views
9

Soweit ich verstehe, eine Möglichkeit, Fehler Ergebnisse mit Ajax zu handhaben ist die folgende:jQuery Standard für Ajax status

$.ajax({ 
    url: someUrl, 
    type: 'POST', 
    success: function(data) {}, 
    error: function(jqXHR, exception) { 
     if (jqXHR.status === 0) { 
      alert('Not connect.\n Verify Network.'); 
     } else if (jqXHR.status == 404) { 
      alert('Requested page not found. [404]'); 
     } else if (jqXHR.status == 500) { 
      alert('Internal Server Error [500].'); 
     } else if (exception === 'parsererror') { 
      alert('Requested JSON parse failed.'); 
     } else if (exception === 'timeout') { 
      alert('Time out error.'); 
     } else if (exception === 'abort') { 
      alert('Ajax request aborted.'); 
     } else { 
      alert('Uncaught Error.\n' + jqXHR.responseText); 
     } 
    } 
}); 

Oder statusCode verwenden, um es besser lesbar:

$.ajax({ 
    url: someUrl, 
    type: 'POST', 
    statusCode: { 
     200: function(data) { 
        : 
        : 
      }, 
     401: function() { 
        : 
        : 
      }, 
       : 
       : 

Meine Frage ist:
Ist es möglich, statusCode zu verwenden und einen Standarddurchlauf dafür zu haben?

Antwort

13

Nicht im statusCode-Parameter. Aber das ist, weil ein besserer (und schlankerer) Weg, wenn Sie alles fangen wollen:

complete: function(jqXHR, textStatus) { 
    switch (jqXHR.status) { 
     case 200: 
      alert("200 received! yay!"); 
      break; 
     case 404: 
      alert("404 received! boo!"); 
      break; 
     default: 
      alert("I don't know what I just got but it ain't good!"); 
    } 
} 
+7

Großartig, danke! wirklich sauber und einfach. Nur für diejenigen, die es verwenden werden, würde ich hinzufügen, dass, um den JSON von der Anfrage zu bekommen, Sie verwenden müssen: data = jQuery.parseJSON (jqXHR.responseText); – guyaloni