2009-05-29 71 views
1

我在註冊表單上使用XMLHttpRequest來查看他們輸入的用戶名是否已被使用。腳本運行正常,但我注意到發出請求時有一些時間延遲 - 網頁在發送請求後被凍結了一秒鐘。如何減少XMLHttpRequest時滯?

有沒有辦法讓請求「在後臺」並且不會在前端造成任何延遲?我喜歡Twitter的實現:它在搜索數據庫時顯示旋轉沙漏圖標。我如何得到類似的東西?

回答

7

您想要使用異步XHR - 當前您正在執行同步請求,因此頁面必須凍結,直到加載完成。異步XHR調用您提供的加載狀態更新的callbck函數。

如果沒記錯,你只需要做

xhr.onreadystatechange = function() { 
    if (xhr.readyState === 4 && xhr.status === 200) loadFinished(); 
} 
xhr.open(requestType, url, true); 

true發出請求的異步。

+0

謝謝!這工作完美。 – Yongho 2009-05-29 01:38:28

1

您需要指定XMLHttpRequest在後臺異步操作。然後,您可以提供回調功能,以便用戶可以繼續瀏覽,直到操作完成。

許多網站只是在等待操作返回時顯示動畫GIF,這可能會給用戶一個印象,因爲它看起來像是發生了一些事情。您可以輕鬆地在http://www.ajaxload.info/上設計和下載其中一個AJAX旋轉指示器。

+0

錯誤號,默認情況下,XHR是*同步*它在等待負載時阻塞。 – olliej 2009-05-29 01:33:11