如何在AJAX中取消XMLHttpRequest?
我們將使用“abort()”方法來取消XMLHttpRequest。這將停止當前請求繼續執行。將來,我們將確保正確取消任何不再需要的請求以最佳化效能。
讓我們首先了解什麼是XML HttpRequest。XMLHttpRequest是一個JavaScript物件,允許Web開發人員向伺服器發出HTTP請求,而無需重新載入整個頁面。它通常用於建立動態和互動式的Web應用程式。
該API可用於以不同的格式(例如文字、XML和JSON)檢索資料。所有現代Web瀏覽器都支援XMLHttpRequest。它是AJAX(非同步JavaScript和XML)的基礎,它允許更新網頁的部分內容,而無需重新載入整個頁面。
方法
要取消AJAX中的XMLHttpRequest,可以使用XMLHttpRequest物件的abort()方法。例如:
var xhr = new XMLHttpRequest(); xhr.open("GET", "example.com", true); // Cancel the request xhr.abort();
它將停止向伺服器傳送請求,如果請求已經發送,它將停止處理響應。
您還可以使用xhr.onabort事件來跟蹤請求是否已被取消,如下所示。
xhr.onabort = function() { console.log("Request cancelled"); }
需要注意的是,abort()方法僅在請求尚未完成時才有效。如果請求已經完成,呼叫abort()將不起作用。
示例
以下是如何使用JavaScript中的abort()方法取消XMLHttpRequest的簡單示例:
var xhr = new XMLHttpRequest(); xhr.open("GET", "example.php"); // Store the request in a variable var request = xhr.send(); // Later on, if you want to cancel the request request.abort();
在這個例子中,我們首先建立一個XMLHttpRequest物件的新例項,並開啟一個到端點https://jsonplaceholder.typicode.com/photos的GET請求。
然後我們將請求儲存在一個變數中併發送它。
如果在任何時候我們想要取消請求,我們可以簡單地對請求變數呼叫abort()方法。
這將立即停止處理請求並阻止任何進一步的操作。
需要注意的是,一旦XMLHttpRequest被中止,就無法重新啟動。
此外,最好在呼叫abort方法之前檢查請求的readyState屬性,因為請求可能已經完成,並且abort方法將不起作用。