<?
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/