Javascript 如何在未完成时从ajax触发的PHP调用中获取更新?
有没有一种方法可以在PHP进程尚未完成且被ajax调用时从中获取更新?我所说的更新是指PHP脚本的刷新输出Javascript 如何在未完成时从ajax触发的PHP调用中获取更新?,javascript,php,jquery,ajax,event-handling,Javascript,Php,Jquery,Ajax,Event Handling,有没有一种方法可以在PHP进程尚未完成且被ajax调用时从中获取更新?我所说的更新是指PHP脚本的刷新输出 var proc; $('#start').click(function () { proc = $.ajax({ type: 'POST', url: 'execute.php', // getData function that will get me updated data getData: function
var proc;
$('#start').click(function () {
proc = $.ajax({
type: 'POST',
url: 'execute.php',
// getData function that will get me updated data
getData: function (update){
alert(update);
}
});
});
更新:
假设我们想在这结束之前得到回音
execute.php
<?php
$progress = 0;
while(1){
$progress++;
echo $progress;
flush();
sleep(5);
if($progress == 100){
break;
}
}
?>
execute.php
<?php
$coco = 0;
function sendMsg($msg, &$coco) {
echo "id: " . $coco . "\n";
echo "data: " . $msg;
echo "\n";
echo "\n";
ob_flush();
flush();
$coco++;
}
header("Content-Type: text/event-stream");
header("Cache-Control: no-cache");
$progress = 0;
while(1){
sendMsg($progress++, $coco);
ob_flush();
flush();
sleep(5);
if($progress == 100){
break;
}
}
?>
我过去曾为此()使用服务器发送事件。Internet Explorer不受开箱即用的支持,但有一些多边形填充可以解决此问题
我认为WebSocket也有类似的功能,但我自己并没有这方面的经验。当成功从服务器加载文件时,可以使用Ajax回调
$('#start').click(function () {
proc = $.ajax({
type: 'POST',
url: 'execute.php',
success: function (respon){
//do what u want to do here.
if(respon.status == 0){
alert("failed");
}
else{
alert("ok");
}
},
error: function(xhr, error){
//for error handling
}
});
});
在php中,您可以响应您想要显示的内容
<?php
$var["status"] = 0;
//if(your condition){ $var["status"] = 1;}
return json_encode($var);
?>
有关更多信息,请参见和,您不理解此php脚本没有完成的问题。我想在它完成之前从中得到一个变量。我一直在更新我的答案,你的意思是这样的吗?您可以从php以json的形式返回变量,并在Ajax函数的成功回调中获得它。在thtat PHP脚本中,我有一个名为$process的变量。在执行5秒之后,有没有一种方法可以在PHP结束执行之前检索该变量。成功会在PHP脚本完成时触发,这意味着它将在这20秒之后触发。我想获得缓冲区,例如,当php执行时,每1秒一次。你能发布你的完整脚本吗?快速信息如何通知长时间运行的部分?@nerdlyist你能重新措辞吗?你想将快速发生的事情发送回页面。这段数据是否用于长时间运行的进程?是的,例如,长进程(PHP脚本)运行时,加载屏幕上会显示100%的条形图。这就是进展。所以你想启动一个过程,然后返回中间状态,即进展有多远?如果是这样的话,你可能想在问题中更直接地给出这些信息……我想我要找的是你有什么例子可以分享吗?
<?php
$var["status"] = 0;
//if(your condition){ $var["status"] = 1;}
return json_encode($var);
?>