在失敗時傳遞給回調的jQuery的jqXHR對象不解析json響應,因此responseJSON未定義,只有responseText可用。jquery ajax在解析失敗時不會解析json
它工作正常的成功請求,我設置使用dataType: '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
的responseText:
{"status":"error","code":500,"message":"A system error occurred, please try again later"}
responseJSON是不確定的
難道jQuery不會解析JSON時,Ajax請求的響應是不成功的情況? 我無法找到任何文件,以證實或否認這種行爲(我可能只是不看夠硬)
我可以明明只是在fail
回調使用parseJSON
。
你說得對。響應內容不是錯誤的。如果您在500錯誤中收到JSON,請自行解析。 – Strelok 2012-03-22 12:01:19
是的。 @Arun非常正確地指出了jquery已經採取這一決定的確切路線,不通過類型轉換器傳遞響應。 – Rob 2012-03-22 12:19:15