调用ajax调用来验证n个数据。
由于需要很长时间才能完成,我想向用户显示进度条或告诉1 / n完成了为了显示它,我应该从控制器获得状态。
有人可以告诉我有没有办法在完成之前从控制器获取状态?或者还有其他更好的实施方式。
答案 0 :(得分:0)
由于普通的AJAX是经典的请求 - 响应,因此您无法从具有相同连接的服务器获取进度信息。您必须进行新的AJAX调用以询问服务器的任务进度。这称为心跳池技术。
更好的解决方案是使用某种持久连接,例如Websockets。这样,服务器可以通过启动任务的同一连接将具有进度信息的消息推送到客户端。浏览器中Websocket的采用很强。
答案 1 :(得分:0)
XMLHttpRequest监控进度:
更多信息: How to get progress from XMLHttpRequest
看起来像是在标准中 https://www.w3.org/TR/progress-events/#firing-events-using-the-progressevent-interface-for-http
答案 2 :(得分:0)
您可以尝试以下方法: 在您使用AJAX调用请求的php文件中,您可以设置包含该进程的$ var。 例如,每5行增加一次var。递增后,调用一个执行动画处理的函数或仅以百分比形式回显处理状态。
<?php
$process = 0;
function foo(){
doSomething();
$process++;
showProcess();
}
function showProcess($process){
echo $process;
//some lazy effects
}
?>
这种方法的负面因素是(属于复杂性)你的程序会慢一些。