2010-10-20 15 views
12

Jeśli wykonam żądanie jonowe AJAX, które zakończyło się sukcesem, otrzymam moje dane JSON. Jednakże, jeśli zgłoszę żądanie i otrzymam coś innego niż kod odpowiedzi 200, nie mogę odzyskać danych w wywołaniu Jquery. Potrzebuję danych, ponieważ mają opis danych.Jquery otrzyma dane o błędzie XHR

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

Wszelkie pomysły?

Dzięki

+3

O czym "dane" mówisz? Jeśli wystąpił błąd serwera, skąd pochodzą "dane" (inne niż informacje o błędzie w obiekcie xhr)? – Pointy

+2

Tak, odpowiedź JSON, taka jak ta {'error': "Twoje konto nie zostało znalezione.}} –

Odpowiedz

18

W:

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

można użyć

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

aby uzyskać odpowiedź w JSON w przypadku wystąpienia błędu.

XMLHttpRequest.responseText 

Pozdrawiam.

+0

Czy możesz zaktualizować tę odpowiedź, aby uwzględnić nowszy sukces/niepowodzenie stylu ajax? – TheJKFever

0

Spróbuj jQuery JSONP plugin. Dodaje on wywołanie zwrotne błędu do żądania JSON, tak:

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

Robi to za pomocą limitu czasu, aby czekać na serwer. Niestety, nie ma innego sposobu, aby powiedzieć, czy odpowiedź serwera z czymś innym niż odpowiedź 200.

Powiązane problemy