"일꾼이 일을 잘하려면 먼저 도구를 갈고 닦아야 한다." - 공자, 『논어』.
첫 장 > 프로그램 작성 > 웹 브라우저에서 XMLHttpRequest에 대한 진행 업데이트를 어떻게 추적할 수 있나요?

웹 브라우저에서 XMLHttpRequest에 대한 진행 업데이트를 어떻게 추적할 수 있나요?

2024-11-08에 게시됨
검색:354

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

XMLHttpRequest에 대한 진행 업데이트 얻기

웹 브라우저는 클라이언트-서버 데이터 교환을 위한 XMLHttpRequest(XHR) 객체를 제공합니다. 표준 XHR API에는 고유한 진행 상황 추적 기능이 없지만 데이터 전송 진행 상황을 모니터링하는 방법이 있습니다.

업로드된 바이트:

XHR은 xhr.upload를 노출합니다. 데이터 업로드 진행 상황을 모니터링하기 위한 onprogress 이벤트입니다. 브라우저는 전체 데이터 크기와 업로드된 양을 모두 추적하므로 정확한 진행 정보를 제공할 수 있습니다.

다운로드한 바이트:

다운로드 진행 상황을 추적하는 것이 더 어렵습니다. 브라우저는 서버가 도착할 때까지 서버에서 전송될 데이터의 크기를 알 수 없습니다. 한 가지 해결책은 서버 스크립트에 Content-Length 헤더를 설정하여 전송할 데이터의 전체 크기를 나타내는 것입니다. 이 헤더가 있으면 브라우저는 다운로드 진행 상황을 정확하게 모니터링할 수 있습니다.

구현 예:

다음 코드는 jQuery UI를 사용하여 파일 업로드 진행 상황을 추적하는 방법을 보여줍니다. 진행률 표시줄을 표시하려면:

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();
}

서버측 스크립트에 Content-Length 헤더를 설정하면 데이터 업로드 및 다운로드 모두에 대한 정확한 진행 상황 추적이 보장됩니다.

결론:

표준 XHR API에는 진행 상황 추적 기능이 내장되어 있지 않지만 위에 설명된 기술을 통해 개발자는 웹 애플리케이션에서 데이터 전송 진행 상황을 모니터링할 수 있습니다. 적절한 Content-Length 헤더를 설정하고 JavaScript 이벤트 핸들러를 활용함으로써 개발자는 사용자에게 실시간 진행 상황 업데이트를 제공하는 직관적이고 사용자 친화적인 인터페이스를 만들 수 있습니다.

최신 튜토리얼 더>

부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.

Copyright© 2022 湘ICP备2022001581号-3