I used flush()
在我的 php 页面中无限循环运行函数,它每秒回显一个文本。当我在浏览器中打开页面时,它可以工作!但是当我通过 jquery ajax 加载它时它没有响应!
php page
<?php
if (ob_get_level() == 0) ob_start();
for ($i = 0; true/*$i<10*/; $i++){
echo "<br> Line to show. $i";
echo str_pad('',4096)."\n";
ob_flush();
flush();
sleep(1);
}
ob_end_flush();
?>
jquery代码
$.ajax({
url: 'res.php',
beforeSend: function( ) {
$('#mydiv').html('loading...');
},
success: function( data ) {
$('#mydiv').html( data );
}
});
HTTP-Streaming 不能简单地使用 $.get 来完成
insert <script> tags
如下:http://ajaxpatterns.org/archive/HTTP_Streaming.php.
<?
while (true) {
?>
<script type="text/javascript">
$('news').innerHTML = '<?= getLatestNews() ?>';
</script>
<?
flush(); // Ensure the Javascript tag is written out immediately
sleep(10);
}
?>
HTTP 流是一个非常复杂的技巧。您应该考虑使用长轮询,它适用于每个浏览器。好像有一些解决方案(幻灯片 54)
简单的长轮询示例主题:
如何实现基本的“长轮询”?
This video shows how to do long-polling: http://www.screenr.com/SNH
P.S:这肯定会杀死你的(性能不佳)服务器。你应该看看http://pusherapp.com对于小型网站来说是免费的。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)