簡體   English   中英

jQuery AJAX中XMLHttpRequest對象的狀態

[英]state of XMLHttpRequest Object in jquery AJAX

在傳統的javascript AJAX中,我們知道readystate是否為:

  • 0-請求未初始化
  • 1-請求已建立
  • 2-請求已發送
  • 3-請求正在處理中
  • 4-請求完成。

關於jQuery AJAX,我們有:

  • complete屬性,我們編寫完成后應該發生的情況
  • success屬性,我們在其中編碼如果ajax請求成功會發生什么,並且
  • error屬性,我們在其中編碼如果ajax請求失敗應該怎么辦。

以上所有屬性使我們可以在ajax請求完成后執行一些操作。 我在哪里可以指定一些代碼來在Jquery Ajax的處理過程中(當readyState為3時)執行某些操作?

由於我的AJAX腳本執行時間太長,這意味着我不會很快達到“完成”階段。 用戶似乎沒有任何反應。 我想在處理階段啟動另一個Ajax腳本,該腳本同時從服務器獲取信息並向用戶顯示到目前為止已完成的操作。 用Java語言完全可以嗎? 我知道Javascript中沒有多線程。

我想我已經說清楚了。 但是,請讓我知道是否有任何問題。

我通過啟動第一個長期運行的請求來處理此問題,立即返回給用戶,並允許進程派生服務器端進行擴展處理。

最初對用戶的返回ajax調用通過針對對象的標志將它們設置為“監視”該過程(我將它們針對對象存儲在數據庫中,但是您可以例如監視文件大小或其他內容)

隨后的ajax調用循環出現,每個下一個調用都返回setTimeout用於下一次調用,並報告對該標志的更改,以便可以看到長時間運行的進程的進度。 長時間運行的進程的完成提示不發送另一個setTimeout()並顯示總體結果。

如果您的過程不那么繁瑣,那么簡單的微調器可能會完成這項工作,而對您的服務器過程則毫無用處。 我通常會處理$ .ajax翻轉“旋轉器”圖標的可見性的情況,該圖標預裝在我頁面的所有位置上。

根據jQuery的Ajax文檔 ,它們不公開readystate更改事件:

沒有提供onreadystatechange機制,但是,因為成功,錯誤,完成和statusCode涵蓋了所有可能的要求。

在初始Ajax請求啟動之后(並且在獲得任何“完成”或“成功”事件之前,然后開始通過ajax輪詢其他URL,這將為您提供第一個請求的狀態),可能會顯示加載圖像,假設您的服務器可以在完成之前顯示長期過程的進度。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM