假设我有一个虚拟服务器端代码(ajax_response.php),它看起来像这样:
<?php
for ($i = 1; $i <= 10; $i++) {
echo $i;
sleep(1);
}
?>
这意味着在10秒后它将回显'12345678910'。
我还有以下jquery代码:
$.ajax({
type: 'POST',
url: 'ajax_response.php'
}).then(function(results) {
//... success
}, function {
//... execute if error occurs
} );
我可以使用上面的ajax来获取ajax_response.php的响应,但问题是,当ajax_response.php完成执行时,只会调用成功函数(即.then中的第一个函数)(需要10个秒)。
我想知道我是否可以提高效率。即。只要在php文件中调用echo,我就会立即从客户端获得响应。
如果您可以包含一些示例代码,那就太棒了。
答案 0 :(得分:0)
在javascript方面
var interval;
$.ajax({
beforeSend: function(){
interval = setInterval(function(){
$.get("http://example.com/pr.txt").done(function(progress){
console.log(progress)
})
},10);
},
type: "POST",
url: "http://example.com/req.php",
data: reqdata,
cache: false,
success: function(html) {
clearInterval(interval);
var values = html.split('[mydata]');
var mydata = values[1];
}
});
`
在PHP方面
unlink("progress.txt");
while ($i <= 20) {
writeToFile(progress, "Mail sent to $i <br>");
sleep(4);
$i++;
}
$final = array('status'=>'ok', 'numbers'=>$success_numbers);
echo json_encode($final);
`