先簡單介紹下ajax:
Ajax請求通過XMLHttpRequest對象發送請求,該對象有四個狀態(readyState):
0-未初始化、1-正在初始化、2-發送數據、3-正在發送數據、4-完成。
當XMLHttpRequest.readyState為4時,表示ajax請求已經完成可以得到響應結果。
ajax的success和error方法根據響應狀態碼來觸發。
- 當XMLHttpRequest.status為200的時候,表示響應成功,此時觸發success().
- 其他狀態碼則觸發error()。
除了根據響應狀態碼外,ajax還會在下列情況下走error方法:
- 返回數據類型不是JSON
- 網絡中斷
- 后台響應中斷
返回JSON格式引發parsererror錯誤:
很多時候會遇到明明成功請求到后台,后台也返回了數據到前端,http狀態是200,卻發生parsererror錯誤,並不執行success方法。
這是因為:jquery1.4版本以后對json格式要求非常嚴格了,要滿足json.org網站定義的格式才能執行success回調,否則都會出錯,無法解析返回的json數據。
JSON格式總結下,詳細的去json.org 查看。
1)鍵名稱:用雙引號 括起
2)字符串:用雙引號 括起
3)數字,布爾類型不需要 使用雙引號 括起
例如:返回的是{success:true,id:1}
這種不規則的字符串,不是嚴格的json格式,改成{"success":true,"id":"1"}
就可以正常執行success回調了。