我一直试图让这个长轮询脚本工作,但我一直卡住。这次我对服务器的ajax请求有问题。提供数据的 php 脚本(使用循环和睡眠运行长轮询)工作得非常好,但我的 jQuery 脚本没有。
到目前为止,我已经尝试使用普通$.ajax()
请求和$.post()
对脚本的请求,但是当我这样做时,整个脚本都会停止。好吧,脚本实际上按预期加载,但页面显示它一直在加载(使用谷歌浏览器它在屏幕底部显示“等待”栏)。在 php 脚本中的 60 秒超时后,jQuery 脚本收到“false”,因为没有找到数据。然后该脚本应该要求提供数据。
我的问题是:如何避免浏览器显示它正在后台加载某些内容?我的服务器是共享服务器,因此在服务器本身上安装东西时我无权访问,因此只能使用 javascript (jQuery) 和 php 来解决。
编辑:刚刚在 Internet Explorer 中检查了我的脚本,它似乎没有显示脚本正在加载的任何迹象,但它在 Google Chrome 中仍然是一个问题
编辑发布一些代码:
这是我的 javascript 文件:
if($("#interestboard"))
{
var lasttime = $("#lasttime").val();
var pollurl = $("#pollurl").val();
lpStart();
}
function lpStart()
{
$.ajax({
type: "GET",
url: pollurl+lasttime,
async: true,
cache: false,
success:function(data)
{
alert(data);
},
error: function()
{
alert("Something went wrong");
}
});
}
当然这是包裹在$(document).ready()
我的 php 脚本如下所示:
while(time()-$time<60)
{
$this->class = $class["id"];
$this->orderBy("timestamp");
$this->_extraConditions = "`timestamp`>'$lastTime' AND ";
$result = $this->search();
if($result)
return $result;
usleep(250000);
clearstatcache();
}
当使用萤火虫(使用谷歌浏览器)时,它只显示一个请求已经发出,但在控制台的 GET 字符串的末尾没有显示通常的加载图标。在 Firefox 中,它也只是显示一个请求正在等待(显示加载图标),但至少浏览器不像页面正在加载一样。
谢谢...