2010-10-20 5 views
12

Wenn ich eine Jquery AJAX-Anfrage, die erfolgreich ist, mache ich meine JSON-Daten zurück. Wenn ich jedoch eine Anfrage mache und etwas anderes als einen Antwortcode von 200 zurückbekomme, kann ich die Daten im Jquery-Rückruf nicht zurückerhalten. Ich brauche die Daten, da sie eine Beschreibung der Daten enthält.Jquery erhalten Daten über XHR-Fehler

success: function (data, tst, xhr) { 
    $.log('XHR OK'); 
}, 
error: function (xhr, tst, err) { 
    $.log('XHR ERROR ' + XMLHttpRequest.status); 
}, 

Irgendwelche Ideen?

Dank

+3

Über welche "Daten" sprechen Sie? Wenn es einen Serverfehler gibt, woher kommen "Daten" (außer der Fehlerinformation im xhr-Objekt)? – Pointy

+2

Ja, eine JSON-Antwort wie folgt {'error': 'Ihr Konto wurde nicht gefunden.'} –

Antwort

18

In der:

error: function (xhr, tst, err) { 
    $.log('XHR ERROR ' + XMLHttpRequest.status); 
}, 

können Sie verwenden

error: function (XMLHttpRequest, textStatus, errorThrown) { 
    $.log('XHR ERROR ' + XMLHttpRequest.status); 
    return JSON.parse(XMLHttpRequest.responseText); 
}, 

die JSON-Antwort in in Falle eines Fehlers zu erhalten.

XMLHttpRequest.responseText 

Prost.

+0

Können Sie diese Antwort bitte aktualisieren, um den neueren Erfolg/Fail-Ajax-Stil einzuschließen? – TheJKFever

0

Versuchen Sie, die jQuery JSONP plugin. Es fügt einen Fehlerrückruf zu einer JSON-Anfrage wie folgt hinzu:

$.jsonp({ 
    url: "Your URL", 
    data: {data: "Some Data"}, 
    dataType: 'jsonp', 
    timeout: 2000, 
    success: function(data, status) { 
     // Do something with data here 
    }, 
    error: function(xhr, text_status){ 
     // Handle the server error 
    } 
}); 

Es tut dies mit einem Timeout auf den Server warten. Leider gibt es keine andere Möglichkeit zu sagen, ob die Server-Antwort etwas anderes als eine 200-Antwort ist.

Verwandte Themen