2012-06-22 11 views
8

予期せずsuccessの代わりにerrorコールバックをトリガーするjQuery AJAXポストリクエストがあります。私が持っている1つのランダムな疑いは、それが間違っているかもしれませんが、受信している302ステータスコードです。jQuery.ajaxはどのような回答を "成功"と考えていますか?

私はthe documentationを見ましたが、1つのことがはっきりしないように感じられます。jQueryのリクエストの成功の定義は何ですか?

+0

私はときだと思いますHTTP 200の応答があります。 – jcubic

+1

が4xx/5xxコードでない場合は、基本的に3xxは、リダイレクトに続いて、新しいURLが返すコードで動作します.2xxは、httpの成功を意味します。 –

+0

薄い2xxと3xxのレスポンスは成功です。しかし、それを承認することはできません。 –

答えて

6

応答が199〜300(> = 200および< 300)または304に等しい場合、responseTextは指定したデータ型(デフォルトではテキスト)に正常に変換できます。

たとえば、JSONを返すと応答ステータスが200になりますが失敗すると、JSONパーサーの問題がJSONが有効でない可能性があります。あなたがHTMLやXMLを返すされており、それは200応答ステータスで失敗した場合、responsetextはそれぞれHTMLまたはXMLに変換することができませんでした

(一般的に無効なHTML/XMLとIEで発生)

+0

私はそれをテストし、302のプレーンステータスコードはエラーになります。おそらく、AJAXリクエストに対する肯定的な回答が常に200であることを簡単にするために最適です。 –

+1

非常に役に立ちました!私は正確なコードを検索し、決定は[完了](https://github.com/jquery/jquery/blob/0d68b7877f761264bfe4950e4df156b854925a6b/src/ajax.js#L655)内部コールバックメソッド内で発生します。具体的には:[ステータスコードチェック](https://github.com/jquery/jquery/blob/0d68b7877f761264bfe4950e4df156b854925a6b/src/ajax.js#L683)、[応答解析チェック](https://github.com/jquery/jquery) /blob/0d68b7877f761264bfe4950e4df156b854925a6b/src/ajax.js#L721) – pimlottc

関連する問題