Javascript 在AJAX响应完成加载之前获取其大小
我使用jQuery通过AJAX从服务器加载数据,这是一个相当正常的用例。诀窍在于,我希望在请求完成之前从请求中获得预期的内容长度;我希望能够在加载数据时显示进度条 有什么办法可以做到这一点吗?我不得不想象有。谢谢Javascript 在AJAX响应完成加载之前获取其大小,javascript,jquery,ajax,content-length,Javascript,Jquery,Ajax,Content Length,我使用jQuery通过AJAX从服务器加载数据,这是一个相当正常的用例。诀窍在于,我希望在请求完成之前从请求中获得预期的内容长度;我希望能够在加载数据时显示进度条 有什么办法可以做到这一点吗?我不得不想象有。谢谢 更新:服务器必须做大量的工作才能生成响应,因此我不希望用两个请求来攻击它,这会破坏目的。您可以在ajax调用中使用xhr事件,然后将进度事件连接到该事件,并检查事件。lengthComputable=true,然后你会得到价值,否则你就得不到价值。您可以签出以下代码 $.ajax({
更新:服务器必须做大量的工作才能生成响应,因此我不希望用两个请求来攻击它,这会破坏目的。您可以在
ajax
调用中使用xhr
事件,然后将进度事件
连接到该事件,并检查事件。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;
}
});
您可以在
ajax
调用中使用xhr
事件,然后将progress event
连接到该事件,并检查event.lengthComputeable=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;
}
});
您可以在
ajax
调用中使用xhr
事件,然后将progress event
连接到该事件,并检查event.lengthComputeable=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;
}
});
您可以在
ajax
调用中使用xhr
事件,然后将progress event
连接到该事件,并检查event.lengthComputeable=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;
}
});
使用
HEAD
requestSearchlengthComputable
,正如@StephenThomas所指出的,尝试HEAD
request;解析内容长度
标题的响应,如果存在?我应该指定这个,服务器必须做大量的工作来生成响应,它无论如何都不是一个静态页面。我不想打两次。有时,页面只需15秒就可以生成(因此需要一个进度条哈哈)。使用HEAD
requestSearchlengthComputable
,正如@StephenThomas所指出的,尝试HEAD
request;解析内容长度
标题的响应,如果存在?我应该指定这个,服务器必须做大量的工作来生成响应,它无论如何都不是一个静态页面。我不想打两次。有时,页面只需15秒就可以生成(因此需要一个进度条哈哈)。使用HEAD
requestSearchlengthComputable
,正如@StephenThomas所指出的,尝试HEAD
request;解析内容长度
标题的响应,如果存在?我应该指定这个,服务器必须做大量的工作来生成响应,它无论如何都不是一个静态页面。我不想打两次。有时,页面只需15秒就可以生成(因此需要一个进度条哈哈)。使用HEAD
requestSearchlengthComputable
,正如@StephenThomas所指出的,尝试HEAD
request;解析内容长度
标题的响应,如果存在?我应该指定这个,服务器必须做大量的工作来生成响应,它无论如何都不是一个静态页面。我不想打两次。有时页面可能需要15秒才能生成(因此需要一个进度条哈哈)。