首頁 >web前端 >js教程 >如何在 Web 瀏覽器中追蹤 XMLHttpRequest 的進度更新?

如何在 Web 瀏覽器中追蹤 XMLHttpRequest 的進度更新?

Patricia Arquette
Patricia Arquette原創
2024-10-27 05:00:03870瀏覽

How can I track progress updates for XMLHttpRequest in web browsers?

取得 XMLHttpRequest 的進度更新

Web 瀏覽器為客戶端-伺服器資料交換提供 XMLHttpRequest (XHR) 物件。雖然標準 XHR API 缺乏固有的進度追蹤功能,但有一些方法可以監控資料傳輸的進度。

上傳的位元組數:

XHR 公開 xhr.upload。 onprogress 事件用於監控資料上傳的進度。由於瀏覽器會追蹤總資料大小和上傳的數量,因此可以提供準確的進度資訊。

下載的位元組數:

追蹤下載進度更具挑戰性,因為在伺服器到達之前,瀏覽器不知道將從伺服器發送的資料的大小。一種解決方案是在伺服器腳本上設定 Content-Length 標頭,指示要傳送的資料的總大小。有了此標頭,瀏覽器就可以準確監控下載進度。

範例實作:

以下程式碼範例示範了使用jQuery UI 追蹤檔案上傳的進度顯示進度條:

<code class="javascript">function updateProgress(evt) {
  if (evt.lengthComputable) {
    // evt.loaded: bytes received
    // evt.total: total bytes (from the Content-Length header)
    var percentComplete = (evt.loaded / evt.total) * 100;
    $('#progressbar').progressbar('option', 'value', percentComplete);
  }
}

function sendreq(evt) {
  var req = new XMLHttpRequest();
  $('#progressbar').progressbar();
  req.onprogress = updateProgress;
  req.open('GET', 'test.php', true);
  req.onreadystatechange = function (aEvt) {
    if (req.readyState == 4) {
      // Handle the response here
    }
  };
  req.send();
}</code>

在伺服器端腳本上設定Content-Length 標頭可確保準確追蹤上傳和下載資料的進度。

結論:

雖然標準 XHR API 缺乏內建的進度追蹤功能,但上述技術可讓開發人員監控 Web 應用程式中資料傳輸的進度。透過設定適當的內容長度標頭並利用 JavaScript 事件處理程序,開發人員可以創建直覺且用戶友好的介面,為用戶提供即時進度更新。

以上是如何在 Web 瀏覽器中追蹤 XMLHttpRequest 的進度更新?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn