使用ajax出現canceled情況


 

在使用ajax的時候要注意,在只定義了一個ajax請求對象的全局變量時,如果同打開發送了一個請求,但在請求還未結束時,又利用這一個全局變量發送另外一個ajax請求,就會出現某一個請求的狀態碼為canceled的情況。

<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv="X-UA-Compatible" content="ie=edge"> <title>使用ajax出錯</title> </head> <body> <button id="sendRequest"> 發送請求 </button> <script> var xmlhttp; if (window.XMLHttpRequest) { xmlhttp=new XMLHttpRequest(); } else { xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); } document.getElementById("sendRequest").onclick = function () { xmlhttp.onreadystatechange = null; xmlhttp.open("GET", "www.baidu.com", true); xmlhttp.send(null); // 這里發送了第二個請求 xmlhttp.onreadystatechange = null; xmlhttp.open("GET", "www.taobao.com", true); xmlhttp.send(null); } </script> </body> </html> 

最終會導致如下的結果:
在這里插入圖片描述
可以看到,最初的請求被取消了,至於第二個請求是404,這與主題無關,狀態是404,說明是請求成功了,有返回值。

> 這種情況在js文件特別大時比較難被發現,尤其是在頁面加載完后進行的某些ajax頁面初始化操作。

避免出現這種問題,可以在發送請求時,單獨new一個對象來完成請求工作。但是也要考慮占用內存過多的問題,在請求完成后要及時地釋放掉無用的資源。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM