2012-01-12 23 views
8

jQueryでは、フォームをサーバーに送信しています。検証エラーが発生すると、サーバーから400エラーが発生し、ドキュメントの本文が有効なJSONになります。私はサーバーから返されたデータにアクセスする方法を知りたいです。 jQuery.AjaxオブジェクトのjQuery.Ajaxで400エラーのJSON応答にアクセスするにはどうすればよいですか?

マイ.ERRORコールバック関数が呼び出されることはありませんので、私は.statusCode {400}関数を使用しています。これは正常に動作しますが、引数のどれも応答本体を含んでいません。

+0

要求が悪かった場合、あなたはより多くの身体のコンテンツを送信する必要はありません。はい、なぜそれが悪いのか、または他の素敵なデータを伝えることが望ましいかもしれないことを理解しています。 – zzzzBov

答えて

7

一部のブラウザXHR実装は、HTTPのステータスが2xxのない場合は、応答本体を提供することを拒否します。私は、私は私のクライアントを制御することができませんでしたAPIの設計にに頼らなければならなかったことは、常にJSONのトップレベルの属性として、200を返し、他の方法(例えばに成功/失敗/ステータスを示すような何かをすることでした応答)。

+7

あなたはここでどのブラウザを使用していますか? – Relequestual

1

私はコールバックでstatusCodeを使用しても問題はありませんでしたが、コールバック関数としてstatusCodeを使用しましたはデータを返しません。

jQuery.Ajax

は、私はあなたのステータスコード200を返すために、サーバ側で検証エラーを処理する方法に異なるアプローチを試みるが、「ERROR_COUNT」のようなパラメータを指定して、そこから行くべきだと思います。

あなたは(...あなたが使用しているアヤックスちょうど$)を使用しているコードの一部を投稿することができますか?

3

私は、ステータス400でJSONレスポンスを取得しようと、それはIE7,8および9、Firefoxとクローム(サファリテストしていない)上で動作します。私にとって

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

これは私が見つけた最高の答えです。簡単にJSONレスポンスを解析し、そのプロパティを使用するように拡張することができます: ''エラー:function(xhr){ toastr.info(JSON.parse(xhr。 responseText).error); } '' '' – hamx0r

0

(クローム)からstatusCodeがあなたの応答のための400のおかげでスティーブンあるとき、XHR応答のresponseTextプロパティは、唯一の「BAD REQUEST」が含まれています。私はPostmanでRESTコントローラから戻ってきたjsonデータを得ることができたが、jQuery Ajaxレスポンスでそれを見つけることができなかったので、これで苦労していた。

+0

はこれが答えであることを意味しますか?あなたの答えの後半はおそらくコメントだったはずです。 –

関連する問題