在ajax调用期间显示一个带有进度的模态窗口

时间:2015-01-27 14:28:28

标签: php jquery ajax excel codeigniter

我有一张excel表,其中包含+30000条记录,我将每条记录插入数据库,我想显示一个带进度条的模态窗口和完成百分比,包括记录总数,插入的记录数,#of记录失败等。我无法更新我提到的标签。我尝试过使用jQuery,但是我无法在运行时将值设置为javascript变量来增加记录插入值。 我正在使用PHP(Codeigniter)将每条记录插入数据库。

我是Jquery和php的新手。请帮忙。感谢..

1 个答案:

答案 0 :(得分:1)

您可以通过多种方式实现这一目标。您可以上传整个文件并让PHP处理它(我认为会更快更有效)。问题是如何准确读取PHP将每行插入数据库的进度。您可以使用flush()将某些内容输出回jQuery会监听的浏览器,但我认为这不是最佳方式。

另一种方法是让jQuery处理文件并更新进度条和计数。可能出现的问题是您尝试插入数据库的行数--30,000条记录可能相当多,但这是我尝试的方式。

首先你需要一个jQuery插件:https://code.google.com/p/jquery-csv/

我在jQuery脚本中添加了注释,因此您可以定位模态框并显示何时执行ajax等。

这是我用作本地* .csv文件保存的数据文件:

a,1
b,2
c,3
d,4
e,5
f,6
g,7
h,8
I,9
j,10

但基本上你解析csv文件并将每行/记录提交到PHP服务器以插入数据库。每次通过ajax成功响应后,您都会更新进度条和计数器(成功和错误)。

http://jsfiddle.net/dmayo2/u3kqgjLy/

以下是相关代码:

var reader = new FileReader();
reader.readAsText(file);
reader.onload = function(event) {
   // process csv file
}

我的2¢