可以计算使用AJAX加载了多少数据?

可以计算使用AJAX加载了多少数据?,第1张

可以计算使用AJAX加载了多少数据?


可能的。XHRs有一个

progress
事件。唯一的问题是访问XHR对象-
不幸的是
beforeSend
仅接收该
jqXHR
对象,而不接收基础XHR对象。也不能作为包装器的属性来访问它。但是,您可以通过将以下选项添加到XHR对象来创建XHR对象
$.ajax()


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
处理程序。当
readyState
XHR对象的变为
2

HEADERS_RECEIVED
)时,您可以访问
Content-Length
标头以获取总大小,然后使用
xhr.readyState == 3

LOADING )等待事件触发

然后,您可以通过查看来计算进度

xhr.responseText.length

但是,这只会触发一次。因此,您需要启动一个计时器(使用
setInterval()
),该计时器将检查就绪状态和响应大小,例如每100毫秒。请求完成后,您可以使用再次停止间隔
clearInterval()



欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5103362.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-11-17
下一篇 2022-11-17

发表评论

登录后才能评论

评论列表(0条)

保存