先用jquery的ajax讀取數(shù)據(jù),在頁(yè)面不刷新的,之后用JS函數(shù)setInterval來(lái)定義重復(fù)執(zhí)行這段ajax事件就解決了。
成都創(chuàng)新互聯(lián)堅(jiān)持“要么做到,要么別承諾”的工作理念,服務(wù)領(lǐng)域包括:成都網(wǎng)站建設(shè)、成都網(wǎng)站設(shè)計(jì)、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣等服務(wù),滿(mǎn)足客戶(hù)于互聯(lián)網(wǎng)時(shí)代的壽陽(yáng)網(wǎng)站設(shè)計(jì)、移動(dòng)媒體設(shè)計(jì)的需求,幫助企業(yè)找到有效的互聯(lián)網(wǎng)解決方案。努力成為您成熟可靠的網(wǎng)絡(luò)建設(shè)合作伙伴!
比如你把a(bǔ)jax的這個(gè)事件寫(xiě)成函數(shù)
function get_data()
{
$.ajax({
//具體配置去參考文檔
});
}
之后用setInterval定義事件
setInterval("get_data()",3000);//3秒一次執(zhí)行
這是具體思路。
具體實(shí)現(xiàn)就是這樣,代碼就沒(méi)必要我?guī)湍闱冒?/p>
1、長(zhǎng)連接,即服務(wù)器端不斷開(kāi)聯(lián)系,PHP服務(wù)器端用ob系列函數(shù)來(lái)不停的讀取輸出,但是相當(dāng)耗費(fèi)服務(wù)器資源。
2、Flash socket,flash的as3語(yǔ)言,創(chuàng)建一個(gè)socket服務(wù)器用來(lái)處理信息。
3、輪詢(xún),顧名思義就是不停地發(fā)送查詢(xún)消息,一有新消息立刻更新,但是會(huì)有多次無(wú)用請(qǐng)求。
4、長(zhǎng)輪詢(xún),是輪詢(xún)的升級(jí)版,需要服務(wù)器端的配合。
5、websocket,HTML5的通信功能,建立一個(gè)與服務(wù)器端的專(zhuān)用接口ws協(xié)議來(lái)進(jìn)行通訊,兼容可能成為問(wèn)題,改天研究一下這個(gè)。
你這種情況就不應(yīng)該用輪詢(xún),而應(yīng)該在ajax的回調(diào)函數(shù)(最好是complete)中再次發(fā)起下一次請(qǐng)求,這樣就可以保證每次請(qǐng)求都是在上一次請(qǐng)求結(jié)束后才發(fā)起的,這樣就不會(huì)造成崩潰了。比如:
function xxx(){
$.ajax({
url:"......",
data:{......},
success:function(data){
//處理返回?cái)?shù)據(jù)
},
error:function(){
//處理錯(cuò)誤
},
complete:function(){? ? //不管成功與失敗,都會(huì)發(fā)生complete回調(diào)
? ? ? setTimeout(xxx,5000);? ? //5秒后再次發(fā)起ajax請(qǐng)求
? ? ? //也可以直接用 xxx();?可以做到完全實(shí)時(shí),但會(huì)犧牲一些性能
? }
});
}
特別注意,xxx函數(shù)在外部調(diào)用時(shí),不能再用?setInterval,而應(yīng)該是xxx()直接調(diào)用!