可以计算使用 AJAX 加载了多少数据
Possible to calculate how much data been loaded with AJAX?
我一直在忙于一些AJAX代码。我想计算已加载的数据量,并且我想用百分比显示它。
我所有预加载的信息都在"反馈"中。我可以计算它包含多少数据(以字节为单位(吗,我还可以查看进度吗?就像加载时一样:10kb,20kb,30kb等
我的代码:
function calc(page)
{
$('#pageLoad h2').animate({ marginTop : '0px'}, 200);
$.ajax(
{
url: './pages/page.php',
type: 'POST',
data: 'page='+page,
success: function( feedback )
{
$('#content').html( feedback );
}
});
};
对不起,我的英语不好。
这是可能的。XHR有一个progress
事件。唯一的问题是访问 XHR 对象 - 不幸的是,beforeSend
只接收jqXHR
对象,而不是底层 XHR 对象。它也不能作为包装器的属性访问。但是,您可以通过向$.ajax()
添加以下选项来挂钩到 XHR 对象的创建过程:
xhr: function () {
var xhr = $.ajaxSettings.xhr(); // call the original function
xhr.addEventListener('progress', function (e) {
if (e.lengthComputable) {
var percentComplete = e.loaded / e.total;
// Do something with download progress
}
}, false);
return xhr;
}
这是我最初的解决方案。与 jQuery 结合使用非常困难,因为您无法轻松挂接到 onreadystatechange 处理程序,并且在设置后无法安全地替换它:
您需要添加自定义onreadystatechange
处理程序。当 XHR 对象的readyState
变为2
(*HEADERS_RECEIVED*( 时,您可以访问 Content-Length
标头以获取总大小,然后等待事件以 xhr.readyState == 3
(LOAD( 触发。
然后,您可以通过查看来计算进度 xhr.responseText.length
.
但是,这只会触发一次。因此,您需要启动一个计时器(使用setInterval()
(,它将检查就绪状态和响应大小,例如每100毫秒一次。请求完成后,使用 clearInterval()
再次停止间隔。
相关文章:
- 用程序搜索JQuery数据表中的文本
- 要求输入在数据列表中
- 正在将数据主题添加到所有项目
- 函数参数中的数据与指定变量之间的任何性能差异
- 在VanillaJS中模拟模型双向数据绑定
- CSS-如何定位内容数据标题
- 使用电话间隙在Android应用程序中显示SQL Lite的数据
- 无法在数据endVal中设置值=“”;{{ucount}}”;使用Angular JS的CountUp
- 序列化数据属性中对象的最可靠方法
- 可以计算使用 AJAX 加载了多少数据
- 如何获取一列中有多少单元格具有数据的值
- angularjs范围内可以存储的最大数据大小是多少?具有重作用域的应用程序的性能
- 我们可以通过多少种方式从客户端发布数据到服务器
- 浏览器中的javascript可以保存多少数据?
- dom中的data属性可以放置多少数据?
- 如何用JavaScript告诉页面中有多少数据主义者
- 当一个集合被修改时,流星会向客户端推送多少数据
- 每个源的浏览器缓存中服务工作者可以存储多少数据
- Excel 任务窗格应用程序中矩阵绑定的最大数据大小是多少
- WebGL中的texImage2D需要多少数据