我有一个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个"在脚本方面,我可以计算处理的记录数和记录总数。如何更新脚本以显示进度
您有几个选项。
1) 当请求开始时,您可以开始轮询一个不同的端点,该端点只提供已处理的记录数量,就像@adeneo建议的那样。您不必每次处理记录时都写入文件。您可以将其存储在内存中,并确保您必须处理进度请求的路由处理程序可以访问同一内存。
2) 在服务器上实现一个websocket端点,该端点推送已处理记录的数量。基本上,在服务器上,您将调用该Websocket库代码来推送进度。您还必须在Javascript端创建一个Websocket连接,这很简单,并监听这些消息。