2012-01-12 10 views
8

W jQuery przesyłam formularze na serwer. W przypadku błędu sprawdzania poprawności otrzymuję błąd 400 z serwera, a treść dokumentu jest poprawna JSON. Chciałbym wiedzieć, jak uzyskać dostęp do danych zwróconych z serwera.Jak uzyskać dostęp do odpowiedzi JSON z jQuery.Ajax na błąd 400?

Moja .error funkcja zwrotna na obiekcie jQuery.Ajax nigdy nie jest wywoływana, więc używam .statusCode {400} function. Działa to dobrze, jednak żaden z argumentów nie zawiera treści odpowiedzi.

+0

jeśli wniosek był zły, nie ma potrzeby, aby wysłać więcej zawartości ciała. Tak, rozumiem, może być pożądane, aby powiedzieć * dlaczego * było złe lub jakieś inne fajne dane. – zzzzBov

Odpowiedz

7

implementacje XHR niektórych przeglądarkach odmówić dostarczyć organizmowi odpowiedź jeżeli status HTTP nie jest 2xx. Co miałem do uciekania się do projektowania API, gdzie nie mogłem kontrolować moich klientów było coś zrobić jak zawsze powrócić 200 i wskazują sukces/awarii/status w jakiś inny sposób (na przykład jako atrybut najwyższego poziomu w JSON odpowiedź).

+7

O jakich przeglądarkach tutaj mówisz? – Relequestual

1

Nie miałem żadnych problemów przy użyciu kodu statusu w wywołaniu zwrotnym, jednak kod statusu jako funkcja zwrotna NIE zwraca żadnych danych w postaci.

jQuery.Ajax

myślę, że należy spróbować innego podejścia, w jaki sposób obsługiwać błędy sprawdzania poprawności po stronie serwera, aby powrócić kod statusu 200, ale z parametrem jak „ERROR_COUNT” i go stamtąd.

można zakładać niektóre kodu używasz (tylko $ .ajax używasz ...)?

3

próbuję dostać json odpowiedzi ze stanu 400 i działa na IE7,8 i 9, Firefox i Chrome, Safari (nie testowane).

... 
error: function(xhr) { 
    error(xhr.responseText); 
} 
... 
+0

To jest najlepsza odpowiedź, którą znalazłem i którą można łatwo rozszerzyć, aby przeanalizować odpowiedź JSON i wykorzystać jej właściwości: '' 'error: function (xhr) { toastr.info (JSON.parse (xhr. responseText) .error); } '' ' – hamx0r

0

Dla mnie (chrom), nieruchomości responseText odpowiedzi XHR zawiera tylko "Bad Request", gdy statusCode jest 400. Dzięki Steven za odpowiedź; Walczyłem z tym, ponieważ w Postmanie mogłem uzyskać dane json, które wracałem z kontrolera REST, ale nie mogłem go znaleźć w odpowiedzi na Ajax jQuery.

+0

czy to ma być odpowiedź? druga połowa twojej odpowiedzi powinna być prawdopodobnie komentarzem. –

Powiązane problemy