dja*_*ngo 23 html javascript jquery
我正在尝试捕获ajax请求的进度.我正在关注此链接中的文章http://www.dave-bond.com/blog/2010/01/JQuery-ajax-progress-HMTL5/.
它没有按预期工作.具有id progressCounter的div应该在其中包含%,据我所知,但在我的情况下没有任何反应.任何帮助?
在我看来,似乎if (evt.lengthComputable) {没有工作XHR
JSFIDDLE: http ://jsfiddle.net/bababalcksheep/r86gM/
HTML:
<div id="progressCounter"></div><br>
<div id="loading">Loading</div><br>
<div id="data"></div>
Run Code Online (Sandbox Code Playgroud)
JS:
var progressElem = $('#progressCounter');
var URL = "https://api.github.com/users/mralexgray/repos";
$("#loading").hide();
// write something in #progressCounter , later will be changed to percentage
progressElem.text(URL);
$.ajax({
type: 'GET',
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) {
if (evt.lengthComputable) {
var percentComplete = evt.loaded / evt.total;
progressElem.html(Math.round(percentComplete * 100) + "%");
}
}, false);
return xhr;
},
beforeSend: function () {
$('#loading').show();
},
complete: function () {
$("#loading").hide();
},
success: function (json) {
$("#data").html("data receieved");
}
});
Run Code Online (Sandbox Code Playgroud)
Dip*_*ole 27
ProgressEvent.lengthComputable只读属性是一个布尔标志,指示ProgressEvent所关注的资源是否具有可以计算的长度.如果不是,则ProgressEvent.total属性没有重要值.
所以在你的情况下,如果你调试一点,你会发现evt.lengthComputable = false;你无法追踪进展;
xhr.addEventListener("progress", function (evt) {
console.log(evt.lengthComputable); // false
if (evt.lengthComputable) {
var percentComplete = evt.loaded / evt.total;
progressElem.html(Math.round(percentComplete * 100) + "%");
}
}, false);
Run Code Online (Sandbox Code Playgroud)
如果lengthComputable在其中为false XMLHttpRequestProgressEvent,则表示服务器从未Content-Length header在响应中发送过.
| 归档时间: |
|
| 查看次数: |
65863 次 |
| 最近记录: |