【发布时间】:2015-10-01 13:33:16
【问题描述】:
是否可以使用 AJAX 显示当前 MySQL 查询进度? 我有一个从 MySQL 数据库获取数据的简单 AJAX 请求,但有时需要 5 秒(取决于行数)。
代码如下:
$.ajax({
xhr: function()
{
var xhr = new window.XMLHttpRequest();
//Download progress
xhr.addEventListener("progress", function(evt){
var percentComplete = evt.loaded / evt.total;
console.log(percentComplete);
}, false);
return xhr;
},
url: '/main/pw_RedrawGraph/',
type: 'POST',
dataType: 'json',
data: {
date_from: date_from,
date_to:date_to
},
success:function(data){
console.log(data)
}
});
如您所见,我尝试使用 xhr 进度但无法正常工作,因为 evt.loaded / evt.total 是无限的
知道如何解决这个问题吗?
【问题讨论】:
-
查询是从 PHP 完成的吗?另外,什么是需要时间的——实际上是查询数据库,或者对结果做一些事情(比如将其格式化为 HTML)?我认为要解决这个问题,您需要在 PHP 中实现它。
-
是的,它是用 php 完成的,只需要 5 秒查询有时有 200k 行。我正在使用codeignieter。图表是用 AJAX 重绘的,所以我想制作这个查询的百分比进度条。
-
如果是查询(不是循环遍历结果)需要时间,我认为您唯一的可能是将其划分为子查询(使用
LIMIT)并监控其中有多少完成的。换句话说,这真是太麻烦了。
标签: javascript jquery mysql ajax progress