jquery ajax - 有什么方法可以得到部分响应吗?

时间:2013-10-29 18:09:59

标签: php jquery ajax

假设我有一个虚拟服务器端代码(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,我就会立即从客户端获得响应。

如果您可以包含一些示例代码,那就太棒了。

1 个答案:

答案 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);

`