【发布时间】:2016-01-10 18:36:38
【问题描述】:
我有这个 ajax 请求来更新我的数据库。
function ajax_submit(){
var submit_val=$("#stato").serialize();
dest="plan/new_bp1.php";
$.ajax({
type: "POST",
url: dest,
data: submit_val,
success: function(data){
data1=data.split("|");
if(data1[0]=="Successo"){
$("#spnmsg").fadeTo(200,0.1,
function(){$(this).removeClass().addClass("spn_success").html(data1[1]).fadeTo(900,1)});
}else if(data1[0]=="Errore"){
$("#spnmsg").fadeTo(200,0.1,
function(){$(this).removeClass().addClass("spn_error").html(data1[1]).fadeTo(900,1)});
}
},
complete: function(){
setTimeout(function(){ $('.container').load('plan/home.php');},2000);
}
});
}
调用的脚本需要很长时间才能执行,因为它每次必须选择、详细说明和插入大约 4.000 条记录。我现在要做的是在屏幕上添加一个微调器,向用户反馈请求正在运行(由 AjaxStart 和 AjaxStop 触发)。
在调用结束时,完整函数将回显 php 脚本将回显的内容。
我想做的是有一个计数器,它会在脚本执行期间更新,我可以说“处理 4.000 条记录中的 X 条记录”之类的内容 在脚本方面,我可以毫无问题地计算处理的记录数和总体记录数。 如何更新我的脚本以显示进度?
【问题讨论】:
-
您将完成的操作存储为一个文件或数据库,然后执行另一个 ajax 请求来轮询该文件或数据库,并在第一个 PHP 脚本运行时获取结果
-
当前请求没有选项接收php脚本回显的反馈?
-
不是真的,你必须将进度(SSE or Sockets)推送到客户端,或者只是用ajax轮询它,你必须用另一个ajax来做调用,因为您不能使用 ajax 返回部分内容,并且仍然继续工作等等。这通常比第一个假设要难,您不能只坚持使用 jQuery 的
progress处理程序来处理这样的事情。 -
知道了。我希望在
progress上错过一些可以帮助我的东西;)