1. 程式人生 > >firefox快速重新整理error及解決辦法

firefox快速重新整理error及解決辦法

問題:

    測試發過來bug,說——頻繁F5重新整理頁面,會閃現未載入完樣式的頁面;
    開發用的Chrome,沒發現這個問題,測試用的firefox,於是從瀏覽器的重新整理載入機制方面搜尋解決辦法,沒搜到,運氣好,最後找到了解決辦法
    firefox下頻繁F5重新整理還有個問題——可能ajax未請求完成就重新整理了,Chrome下是重新整理就自動canceld,但是firefox好像不是,上一次請求的結果因為重新整理頁面所以執行了error方法,頁面閃現一下error方法的結果知道新的頁面請求完成。

 

請求根本沒有傳送到後臺,狀態碼是0表示沒有發出ajax請求。各個狀態含義:

  • 0 - (未初始化)還沒有呼叫send()方法
  • 1 - (載入)已呼叫send()方法,正在傳送請求
  • 2 - (載入完成)send()方法執行完成,
  • 3 - (互動)正在解析響應內容
  • 4 - (完成)響應內容解析完成,可以在客戶端呼叫了

jQuery ajax請求錯誤返回status 0和錯誤error的問題,分析可能的原因:

  • url不存在(排除)
  • url不可達(排除)
  • 傳送了跨域請求(排除)
  • 資料格式錯(排除)
  • ajax在完成之前請求已經被取消(ajax請求沒有發出),由於,例如:頁面已經跳轉或跳轉太快、瀏覽器輸入新的url、按鈕立即新的點選等
    確定

用status做判斷條件,status為0,說明當前是中斷,或者unsent,opened,則不執行error
但是!通過Chrome的除錯可以看出,同樣是status為0,有canceled和failed兩種狀態,這個還找不到辦法判斷。

解決辦法:

error: function (jqXHR,textStatus,errorthrown) {

  //當前請求容器為空或錯誤原因為超時時才執行err

  if(jqXHR.status!==0 || textStatus=="timeout"){

    err ? err(jqXHR) : alert("原函式error");

  }

}