用ajax技术实现无闪烁定时刷新页面
在Web開發中我們經常需要實現定時刷新某個頁面:1.來保持session的值或者檢查session的值是否為空(比如說防止同一用戶重復登錄);2.實現實時站內短信;3.定時更新頁面數據等等。但是我們在網上搜搜會發現有很多定時刷新頁面的方法,最簡單的就是在<head></head>標記之間加上如下代碼:
在<head></head>標記之間加上代碼,實現定時刷新,此代碼我已經測試過,可以實現效果?? ? ??<meta http-equiv="refresh" content="5" URL="Example.aspx" />?
?? ? ? ? 說明:content的值代表頁面刷新的間隔時間,以秒為單位
?? ? ? ? ? ? ? ? ?URL的值指定刷新的頁面
還有一種方法就是用JavaScript來定時刷新頁面
JavaScript定時刷新頁面,此代碼我沒有經過測試 Code1?<script>??2?var?limit="0:10"??3?if?(document.images){??4?var?parselimit=limit.split(":");??5?parselimit=parselimit[0]*60+parselimit[1]*1;??6?}??7?function?beginrefresh(){??8?if?(!document.images)??9?return;?10?if?(parselimit==1)?11?window.location.reload();?12?else{?13?parselimit-=1;?14?curmin=Math.floor(parselimit/60);?15?cursec=parselimit%60;?16?if?(curmin!=0)?17?curtime=curmin+"?min?"+cursec+"?sec?";?18?else?19?curtime=cursec+"?sec?";?20?window.status=curtime;?21?setTimeout("beginrefresh()",1000);?22?}?23?}?24?window.onload=beginrefresh;25?</script>
加到body中間,這里是0:10為10秒鐘,可以自定義
當然還有很多中方法,我這里就不一一列舉了。用以上方法刷新頁面有點缺點就是刷新頁面的時候會閃爍,那樣的話如果需要在短時間內就刷新的話估計用戶的眼都閃壞了,而且也顯得我們太不專業了吧。
,呵呵,開個玩笑。如果有一種方法能夠定時刷新指定的頁面,而且不會讓我們看見頁面閃爍,那么該多好啊,是吧?無閃爍的頁面刷新我們一般采用ajax+js或者webservice來實現,下面我就介紹一種用ajax+js來實現無閃爍定時刷新的方法,其實我對ajax了解的也很淺,在做項目的過程我們用ajax來實現局部刷新。好了,廢話不多說了,看看代碼:=> ajax+js實現無閃爍定時刷新頁面 Code?? ?<script type="text/javascript">
?? ? ? ?function makeRequest() {
?? ? ? ? ? ?var guid = rnd();
?? ? ? ? ? ?//記住給個隨機數,不然的話有緩存
?? ? ? ? ? ?var url = "example_b.aspx?id=" + guid;
?? ? ? ? ? ?createXMLHttpRequest();
?? ? ? ? ? ?xmlHttp.onreadystatechange = handleRefresh;
?? ? ? ? ? ?xmlHttp.open("GET", url, false);
?? ? ? ? ? ?xmlHttp.send(null);
?? ? ? ?}
?? ? ? ?//創建xmlHttp
?? ? ? ?var xmlHttp;
?? ? ? ?function createXMLHttpRequest() {
?? ? ? ? ? ?if (window.ActiveXObject) {
?? ? ? ? ? ? ? ?xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
?? ? ? ? ? ?}
?? ? ? ? ? ?else if (window.XMLHttpRequest) {
?? ? ? ? ? ? ? ?xmlHttp = new XMLHttpRequest();
?? ? ? ? ? ?}
?? ? ? ?}
?? ? ? ?//返回信息
?? ? ? ?function handleRefresh() {
?? ? ? ? ? ?if (xmlHttp.readyState == 4) {
?? ? ? ? ? ? ? ?if (xmlHttp.status == 200) {
?? ? ? ? ? ? ? ? ? ?if (xmlHttp.responseText == "sessionNull") {
?? ? ? ? ? ? ? ? ? ? ? ?//alert('登錄超時,帳戶注銷,請重新登錄...');
?? ? ? ? ? ? ? ? ? ? ? ?window.parent.document.location = "UserLogin.aspx";
?? ? ? ? ? ? ? ? ? ?}
?? ? ? ? ? ? ? ? ? ? ? ?setTimeout("makeRequest()", 8*000);
?? ? ? ? ? ? ? ?}
?? ? ? ? ? ?}
?? ? ? ?}
?? ? ? ?//創建隨機數
?? ? ? ?rnd.today = new Date();
?? ? ? ?rnd.seed = rnd.today.getTime();
?? ? ? ?function rnd() {
?? ? ? ? ? ?rnd.seed = (rnd.seed * 9301 + 49297) % 233280;
?? ? ? ? ? ?return rnd.seed / (233280.0);
?? ? ? ?}
?? ? ? ?function rand(number) {
?? ? ? ? ? ?return Math.ceil(rnd() * number);
?? ? ? ?}
?? ?</script>
舉個例子,比如說要example_a.aspx頁面加載以后讓測試頁面example_b.aspx每8秒刷新一次,檢查存放登錄用戶名的session值是否為空,如果session為空,則返回登錄頁面。那么我們可以將上面的js代碼放在example_a.aspx頁面的<head></head>標記之間,然后在頁面body的onload事件中調用上面的方法:οnlοad="makeRequest()",然后在頁面的Page_Load事件中判斷:
???? ? ? ? ? ?if (Session["user"] == null)
Code?? ? ? ? ? ? {
?? ? ? ? ? ? ? ?Response.Clear();
?? ? ? ? ? ? ? ?Response.Write("sessionNull");
?? ? ? ? ? ? ? ?Response.End();
?? ? ? ? ? ?}
總結
以上是生活随笔為你收集整理的用ajax技术实现无闪烁定时刷新页面的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 中国人民银行同期贷款利率表
- 下一篇: 解决Extjs中Combobox显示值和