java ajax轮询_ajax长轮询实现即时聊天室

前段js:

//处理ajax长轮询

$(function(){

ask_order();

function ask_order(){

var ask_action = "{:U(‘index/order_commet‘,array(‘time‘=>10,‘desk_id‘=>$desk_id))}";

$.ajax({

type:"GET",

dataType:"json",

url:ask_action,

timeout:80000,     //ajax请求超时时间80秒

success:function(data,textStatus){

//从服务器得到数据,显示数据并继续查询

if(data.status=="1"){

//alert(data.data);

var html_str = "";

var result = data.data;

$(result).each(function(i) {

html_str += ‘

‘+result[i].goods_name+‘     删除

});

$(‘.product_ordered‘).html(html_str);

}

//未从服务器得到数据,继续查询

if(data.status=="0"){

console.log(‘没有数据‘);

}

setTimeout(ask_order, 5000);//5000毫秒,自己定义延迟时间

} ,

//Ajax请求超时,继续查询

error:function(){

setTimeout(ask_order, 5000);//5000毫秒,自己定义延迟时间

}

});

}

})

后台PHP:

//处理长轮训方法。

public function order_commet(){

if(empty($_GET[‘time‘])){

die();

}

set_time_limit(0);

$limit_time = $_GET[‘time‘];

$desk_id = $this->desk_id;

$i = 0;

while (TRUE) {

usleep(500000);

$i++;

$result = $this->order_mod->get_order_by_desk($desk_id);

if($result[‘result‘] == 1){

$this->ajaxReturn(array(‘status‘=>1,‘data‘=>$result[‘data‘]));

die();

}

if($i == $limit_time || !$desk_id){

$this->ajaxReturn(array(‘status‘=>0,‘data‘=>‘无数据‘));

die();

}

}

}

原文:http://www.cnblogs.com/JulianJiang/p/3819870.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值