1. 程式人生 > >ajax在什麼情況下走success和error

ajax在什麼情況下走success和error

轉自:https://www.jianshu.com/p/11d675e3e75f

先簡單介紹下ajax:

Ajax請求通過XMLHttpRequest物件傳送請求,該物件有四個狀態(readyState):
0-未初始化、1-正在初始化、2-傳送資料、3-正在傳送資料、4-完成。
當XMLHttpRequest.readyState為4時,表示ajax請求已經完成可以得到響應結果。

ajax的success和error方法根據響應狀態碼來觸發。

  • 當XMLHttpRequest.status為200的時候,表示響應成功,此時觸發success().
  • 其他狀態碼則觸發error()。

除了根據響應狀態碼外,ajax還會在下列情況下走error方法:

  1. 返回資料型別不是JSON
  2. 網路中斷
  3. 後臺響應中斷

 返回JSON格式引發parsererror錯誤:

很多時候會遇到明明成功請求到後臺,後臺也返回了資料到前端,htttp狀態是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回調了。