有人遇到 Chrome 放棄 (abort) ajax 請求 (request) 的狀況,但原因不明。只知道 XMLHttpRequestEventTarget.onabort
被呼叫了。
有人查了 Chrome 的程式碼與也有人歸納自己的經驗,發現有以下幾種情形 Chrome 會放棄請求:
發出請求的 DOM 元素已經被刪叫
例如說 <img>
將要載入圖片,但在載入發生之前,<img>
就被刪掉了。
做了某件事造成不需要該請求
例如載入一個 iframe,但卻改變 src 屬性,因此原本要載入的內容就不需要了。
多個請求中的第一個失敗了
架設有多個請求陸續發到同一個伺服器,先發的某個請求因為網路問題失敗了,例如 DNS 錯誤、400 等,那後續的請求就會被取消
Self-signed certificate 不被 android Chrome 信任
你發出一個請求到一個 self-signed 網站,因為 SSL certificate 不被 Chrome 信任,因此它就悄悄地取消該請求,也沒有任何訊息。要下載與安裝該 certificate 到 Chrome 中才能解決。
點擊在 form 中的 <button>
若點擊在 form 中的 <button>
要發出 AJAX 請求,也會被瀏覽器取消。
你可以改用 div
或 span
。如果必須要用 button
,必須呼叫preventDefault()
。
留言