重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
先用jquery的ajax读取数据,在页面不刷新的,之后用JS函数setInterval来定义重复执行这段ajax事件就解决了。
成都创新互联坚持“要么做到,要么别承诺”的工作理念,服务领域包括:成都网站建设、成都网站设计、企业官网、英文网站、手机端网站、网站推广等服务,满足客户于互联网时代的寿阳网站设计、移动媒体设计的需求,帮助企业找到有效的互联网解决方案。努力成为您成熟可靠的网络建设合作伙伴!
比如你把ajax的这个事件写成函数
function get_data()
{
$.ajax({
//具体配置去参考文档
});
}
之后用setInterval定义事件
setInterval("get_data()",3000);//3秒一次执行
这是具体思路。
具体实现就是这样,代码就没必要我帮你敲吧
1、长连接,即服务器端不断开联系,PHP服务器端用ob系列函数来不停的读取输出,但是相当耗费服务器资源。
2、Flash socket,flash的as3语言,创建一个socket服务器用来处理信息。
3、轮询,顾名思义就是不停地发送查询消息,一有新消息立刻更新,但是会有多次无用请求。
4、长轮询,是轮询的升级版,需要服务器端的配合。
5、websocket,HTML5的通信功能,建立一个与服务器端的专用接口ws协议来进行通讯,兼容可能成为问题,改天研究一下这个。
你这种情况就不应该用轮询,而应该在ajax的回调函数(最好是complete)中再次发起下一次请求,这样就可以保证每次请求都是在上一次请求结束后才发起的,这样就不会造成崩溃了。比如:
function xxx(){
$.ajax({
url:"......",
data:{......},
success:function(data){
//处理返回数据
},
error:function(){
//处理错误
},
complete:function(){ //不管成功与失败,都会发生complete回调
setTimeout(xxx,5000); //5秒后再次发起ajax请求
//也可以直接用 xxx(); 可以做到完全实时,但会牺牲一些性能
}
});
}
特别注意,xxx函数在外部调用时,不能再用 setInterval,而应该是xxx()直接调用!