我试图用AJAX显示安装进度
我的PHP代码如下所示:
if($method == "install"){
$_SESSION['progress']="step 1";
$obj->thisTakesAboutAMinute();
$_SESSION['progress']="step 2";
$obj->thisTakesAboutAMinute();
.
.
.
}else if($method == "getProgress"){
echo($_SESSION['progress']);
}
当页面加载时我为" getProgress"设置间隔功能
setInterval(function(){
$.ajax({
method: "POST",
url: "./scripts/script.php",
async: true,
data: {method: "getProgress"}
}).done(function( msg ) {
$("#message").html(msg);
});
}, 1000);
和"安装"按下按钮后调用。
$.ajax({
method: "POST",
url: "./scripts/script.php",
async: true,
data: {method: "install"}
});
问题在于,当我开火"安装"请求" getProgress"请求停止返回,直到"安装"完成然后立即返回。
https://postimg.org/image/hj72qdnhr/
知道发生了什么事吗?
答案 0 :(得分:0)
很难得到确切的进展,因为存在很多不确定因素,脚本执行时间,网络延迟和浏览器处理时间等等,所有这些都是不稳定的。
答案 1 :(得分:0)
将代码放在success
函数内。因为完成函数总是在完成ajax调用后执行。所以你想等待第二次ajax调用...所以
setInterval(function(){
$.ajax({
method: "POST",
url: "./scripts/script.php",
async: true,
data: {method: "getProgress"},
success:function(msg){
$("#message").html(msg);
}
});
}, 1000);
希望它能奏效。