利用Jquery实现http长连接(LongPoll)

本文介绍了一种使用jQuery实现的长轮询技术,通过客户端发送请求并等待服务器响应直至有新数据或超时为止。文章详细展示了前端JavaScript代码如何设置长时间等待的AJAX请求,并在后台代码中实现数据准备及响应机制。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

$(document).ready(function(){  
            $("#Button1").bind("click",{btn:$("#Button1")},function(evdata){  
                $.ajax({  
                    type:"POST",  
                    url:"JqueryAjaxLongPoll.aspx",  
                    dataType:"json",  
                    data:{ajax:"1",time:"6000000"},  
                    success:function(data,textStatus){  
                            //成功  
                            if(data.success=="1"){  
                                //客户端处理  
                                //...  
                                ///重新请求  
                                evdata.data.btn.click();  
                            }  
                            //超时  
                            if(data.success=="0"){  
                                evdata.data.btn.click();  
                            }  
                    },  
                    complete:function(XMLHttpRequest,textStatus){  
                            if(XMLHttpRequest.readyState=="4"){  
                                alert(XMLHttpRequest.responseText);  
                            }  
                    },  
                    error: function(XMLHttpRequest,textStatus,errorThrown){  
                            //$("#ajaxMessage").text($(this).text()+" out!")  
//                            alert("error:"+textStatus);  
//                            if(textStatus=="timeout")  
                                evdata.data.btn.click();  
                    }  
                });  
            });  
  
后台代码变更后:  
if (Request.Form["ajax"] == "1")  
        {  
            int time = Convert.ToInt32(Request.Form["time"]);  
            DateTime date1 = DateTime.Now.AddMilliseconds((double)time);  
            bool ready = false;  
            while (Response.IsClientConnected)  
            {  
                Thread.Sleep(3000);  
                if (DateTime.Compare(date1, DateTime.Now) < 0)  
                {  
                    Response.Write("{success:'0'}");  
                    Response.End();  
                    break;  
                }  
                //此处进行请求处理,有结果了置ready = true  
                //ready = true;  
                if (ready)  
                {  
                    Response.Write("{success:'1'}");  
                    Response.End();  
                    break;  
                }  
            }  
        }  
        else  
        {  
            if (!Page.IsPostBack)  
            {  
  
            }  
        }  

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值