JQuery Ajax to PHP在查询期间更新div

时间:2012-05-15 08:47:59

标签: php jquery ajax progress

我从CSV文件导入4000行。第1页显示服务器上的CSV文件,带有PROCESS按钮。 Onclick按钮,我使用 JQuery Ajax 来调用导入所需的 PHP代码。在进行相关检查,更新记录和插入记录等之后,整个导入过程大约需要30秒到1分钟。

我尝试做的是在处理php代码时显示此导入的进度。 即:

Total records to import: 4000
Total users imported: 20 [div id=usersImported - this number dynamically increments while importing]
Total users updated: 30 [div id=usersUpdated - same here re incrementing]
Etc..

我不确定正确的问题是什么,因为我已尝试从php代码更新DIVs (usersImported and usersUpdated) - 无法使其正常工作。这只是将我的脚本代码返回给浏览器,但实际上并没有执行它

我已尝试在更新或插入之后在php中执行回显..即:usersImported1然后usersImported2然后usersImported3 ..然后在我的JQuery成功中我尝试:

if( txt.match( "usersImported" ).length > 0 ) { ..更新div innerHTML代码,带有前导号码。

这不起作用,因为即使我已经尝试过ob_flush();flush();,因为成功只运行在ajax中,因此php在处理过程中不会刷新整个PHP代码完成了吗?有没有JQuery while:command?

所以我猜的真正问题是:这样做的正确方法是什么?从PHP更新DIV或基于PHP回声的$ ajax更新div?这类似于进度条更新,但我想根据处理时间内发生的情况更新某些div。

我很感激一个基本的例子或工作样本的链接。

2 个答案:

答案 0 :(得分:0)

猜猜ajax没有激活,因为你没有关闭http,它坐着等待更多的来。

您需要在服务器上播放或填充您的工作。

一个脏修复方法是让updater将百分比写入静态公共文件,由客户端读取并继续轮询该文件。 (添加一个随机的查询字符串,以便获得传递缓存)。

答案 1 :(得分:0)

没有任何直接的方法。您可以将PHP进程状态写入任何外部源,如filedatabase,并在客户端读取特定时间后的状态。

希望本文能为您指明方向: