我正在使用jQuery从服务器通过AJAX加载数据,这是一个相当正常的用例。诀窍是我想在请求完成之前从请求中获得预期的内容长度;我希望能够在加载数据时显示进度条。
有什么办法可以做到这一点吗?我必须想象有。谢谢!
更新:服务器必须做很多工作才能生成响应,所以我不想用两个请求来点击它,这样就会失败。
答案 0 :(得分:3)
您可以在xhr
来电中使用ajax
个事件,然后将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;
}
});