JQuery通过xhr实现ajax进度
JQuery通过xhr实现ajax进度
我正在尝试捕获ajax请求的进度。 我正在遵循这个链接中的文章:http://www.dave-bond.com/blog/2010/01/JQuery-ajax-progress-HMTL5/。
但是结果不如预期。根据我的理解,id为progressCounter的div应该显示一个百分比,但在我的情况下没有任何变化。有什么帮助吗?
我觉得在XHR中,if (evt.lengthComputable) {
这一段没有起作用。
JSFIDDLE链接:http://jsfiddle.net/bababalcksheep/r86gM/
HTML代码:
加载中
JS代码:
var progressElem = $('#progressCounter'); var URL = "https://api.github.com/users/mralexgray/repos"; $("#loading").hide(); // 在 #progressCounter 中写入一些内容,稍后将更改为百分比 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(); // 下载进度 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("数据已接收"); } });