jQueryのjqXHRオブジェクトは、失敗時にコールバックに渡され、json応答を解析しないため、responseJSONは定義されていません。jquery ajaxは失敗時にjsonを解析しません。
$.ajax({
type: 'POST',
url: $form.attr('action'),
data: post_data,
dataType: 'json',
done: done_callback,
fail: fail_callback,
always: always_callback
});
リクエストヘッダ:
Accept:application/json, text/javascript, */*; q=0.01
X-Requested-With:XMLHttpRequest
User-Agent:Mozilla/5.0 (Macintosh; Intel Mac OS X 10_6_8) AppleWebKit/535.11 (KHTML, like Gecko) Chrome/17.0.963.83 Safari/535.11
レスポンスヘッダ:
Content-Type:application/json;charset=utf-8
Status:500
それは成功した要求のために正常に動作します、私はdataType: 'json'
コールを使用して、正しいヘッダを設定しています
responseText:
{"status":"error","code":500,"message":"A system error occurred, please try again later"}
responseJSONが
未定義であることは、Ajaxリクエストへの応答に失敗したときにjQueryはJSONを解析しない場合ですか?私は明らかにちょうどfail
コールバックでparseJSON
を使用することができ、私は、この動作を確認するか、拒否する任意のドキュメントを見つけることができません (私は十分に懸命に見ていないことができる)
。
あなたが正しいです。レスポンスの内容は誤って評価されません。 500のエラーでJSONを受け取っている場合は、自分で解析してください。 – Strelok
はい。 @ Arunは、jqueryがタイプコンバータを通して応答を渡さないようにこの決定を下した正確な行を私に非常に正しく指摘しました。 – Rob