国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > AJAX > 正文

解決瀏覽器記住ajax請求并能前進和后退問題

2024-09-01 08:30:45
字體:
來源:轉載
供稿:網友

在我們瀏覽不同網頁的時候,我們可以通過瀏覽器的前進、后退鍵來去到我們前后訪問過的頁面。這都有一個共同點,就是 瀏覽器地址欄的地址改變了。瀏覽器自身維護了一個記錄用戶訪問頁面歷史的棧,棧中記錄了用戶訪問不同頁面的先后順序。

但是在開發中,我們經常會用到ajax技術去提升網頁的用戶體驗。但是ajax本身并不改變瀏覽器地址欄中的url,是在同一個網頁內部操作的,這時,瀏覽器并不會記錄ajax請求的記錄。在這種情況下,用戶在一個頁面觸發的5次ajax請求后,點了后 退按鈕,瀏覽器不會再次請求之前的ajax請求,而是返回了上一頁。

解決這個問題的第一種方法就是利用location的hash值。當url的hash值改變時,頁面并不會跳轉,但是瀏覽器此時會將此帶hash的url記錄到歷史記錄中。利用這個特性,我們可以人為的模擬帶歷史記錄功能的ajax請求。下面是這種方法的demo。

ul{ margin:0; padding:0;}li{ list-style: none; display: block; float: left; border: 1px solid #000; padding: 10px; margin-right: 20px; cursor: pointer;}li.active{ background-color: #000000; color: #fff;}<ul> <li data-id="1">1</li> <li data-id="2">2</li></ul>

先創建兩個按鈕,點擊按鈕時,向服務器發送請求,并將data-id通過參數帶到服務器,服務器返回對應data-id的結果。
于此同時,改變按鈕狀態,并將location的hash值改為data-id的值。最后監聽location的hash值變化,重復上述步驟。

function sendAjax(hash){ console.log("recived data:" + hash);}function btnStatus(hash){ $("li").removeClass('active'); $("li[data-id="+hash+"]").addClass('active');}function onHashChange(){ var curHash = window.location.hash.replace("#",""); if(curHash){  btnStatus(curHash);  sendAjax(curHash); }}window.onhashchange = onHashChange;$("li").click(function(){ var id = $(this).attr('data-id'); window.location.hash = id;});

當我們點擊按“1-2-1”這樣的順序點擊按鈕時,控制臺的輸出如下

recived data:1recived data:2recived data:2

此時我們連續按三次返回按鈕,控制臺輸出如下

recived data:1recived data:2recived data:1

可見這樣就模擬實現了瀏覽器記錄ajax請求的功能。

以上所述是小編給大家介紹的讓瀏覽器記住ajax請求并能前進和后退方法(一),希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對武林網網站的支持!

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 阳泉市| 松潘县| 天水市| 凉城县| 玛沁县| 体育| 麦盖提县| 江陵县| 泰顺县| 武城县| 武隆县| 宁陵县| 滦南县| 台前县| 沽源县| 米脂县| 新民市| 渑池县| 巴东县| 海南省| 横山县| 鲜城| 高雄市| 黄骅市| 平安县| 英吉沙县| 阳山县| 土默特右旗| 凤城市| 白银市| 瑞安市| 清涧县| 锡林郭勒盟| 微博| 翼城县| 周至县| 武山县| 格尔木市| 社会| 宁蒗| 白玉县|