2014-10-13 4 views
0

jQuery를 사용하여 서버에서 AJAX를 통해 데이터를로드하는 경우는 매우 일반적인 사용 사례입니다. 그 트릭은 요청이 완료되기 전에 요청 내용 길이를 얻고 싶습니다. 데이터가로드 될 때 진행률 막대를 표시 할 수 있어야합니다.로딩이 끝나기 전에 AJAX 응답의 크기를 가져옵니다.

이 작업을 수행 할 방법이 있습니까? 나는 그것이 있다고 상상해야한다. 감사!

업데이트 : 서버는 응답을 생성하기 위해 상당한 노력을해야하므로 두 가지 요청으로 서버를 공격하지 않으려 고합니다.

+0

는 @StephenThomas가 지적했듯이,'HEAD' 요청을 시도해보세요'HEAD' 요청 –

+0

검색'lengthComputable' – Anthony

+0

를 사용; 'Content-Length' 헤더에 대한 응답을 구문 분석합니까? – guest271314

답변

3

당신은 ajax 호출 xhr 이벤트를 사용하고, 그 다음에 progress event를 연결하고, event.lengthComputable= true 경우, 당신은 가치를 얻을 것이다, 다른 사람이 값을받지 않습니다 확인할 수 있습니다. 다음 코드를 확인할 수 있습니다.

$.ajax({ 
    type: 'POST', 
    dataType: 'json', 
    url: URL, 
    cache: false, 
    error: function (xhr, ajaxOptions, thrownError) { 
     alert(xhr.responseText); 
     alert(thrownError); 
    }, 
    xhr: function() { 
     var xhr = new window.XMLHttpRequest(); 
     //Download progress 
     xhr.addEventListener("progress", function (evt) { 
      console.log(evt.lengthComputable); 
      if (evt.lengthComputable) { 
       var percentComplete = evt.loaded/evt.total; 
       console.log(percentComplete); 
      } 
     }, false); 
     return xhr; 
    }, 
    beforeSend: function() { 
     // before send 
    }, 
    complete: function() { 
     // complete. 
    }, 
    success: function (json) { 
     // success; 
    } 
}); 
관련 문제