php - jQuery 和 PHP 中的无限循环。我应该改变什么才能让它发挥作用?

标签 php javascript jquery

<?
if($_POST['begin'])
{
    while(1)
    {
        echo "1";
        sleep(2);
    }
    die();
}
?>

<span class="answer"></span>

<script type="text/javascript">
$(document).ready(function() {
        $.ajax({
            type: "POST",
            url: "exp.php",
            data: "begin=1",
            success: function(msg){
                $(".answer").html(msg);
            }
        })  
})
</script>

当然,这是行不通的。我应该改变什么才能让它发挥作用?我可以避免在 JavaScript 中使用 setInterval、setTimeout 或其他函数吗?

顺便说一句,我在这里想做的是每两秒写一次数字 1。

最佳答案

我从未尝试过,但 XMLHttpRequest 接口(interface)据说支持流式请求。特别是 .readyState==3 表示部分结果(请参阅规范 http://www.w3.org/TR/XMLHttpRequest/#event-handler-attributes )。

当您不想设置间隔处理程序时,您将必须覆盖实际的 XHR 回调,因为 jQuery success: 实际上只会在完成时触发。

xmlHttp = $.ajax({ ... });

xmlHttp.onreadystatechange = function () {
    if (xmlHttp.readyState >= 3) {
        alert(xmlHttp.responseText);
    }
};

请注意,responseText 将始终包含累积的数据。因此,如果您想读取最新的 1,则必须将其拆分为 \n 或其他内容。

关于php - jQuery 和 PHP 中的无限循环。我应该改变什么才能让它发挥作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5773799/

相关文章:

javascript - 我们应该将条形码存储在数据库中吗?

php - PHP解析/语法错误;以及如何解决它们

php - 求出两个不同长度数组的欧式距离

javascript - 为什么需要复制数组才能对其使用方法?

php - 如何在 select 命令中选择表的主索引作为列

javascript - 如何使底层元素不可点击/停用?

javascript - 将数组更改为 json

javascript - .prevUntil 未按预期工作

jquery - 如何使用查询从当前机器时间启动计时器?

javascript - jQuery 检查 <li> 是否包含 2 个 img 标签