1. 程式人生 > >返回上一頁,ajax讀出來的資料丟失。

返回上一頁,ajax讀出來的資料丟失。

在寫專案的時候遇到這樣一個問題,一個類似電商的,根據類別、品牌、年份等查商品,點選查詢按鈕通過ajax查詢出的。查出來之後點選圖片跳轉到商品詳情頁,這時候再返回到商品查詢頁時,之前ajax讀出來的資料會丟失(丟失的主要是通過事件查出來的資料),頁面會回到剛進入這個頁面時的狀態。

解決方案:

1、如果是pc端,直接用window.open(),或者aget="_blank"開啟新頁面。

2、如果是移動端,可以用HTML5本地儲存(web Storage)中的localStoragesessionStorage將整個頁面的資料儲存在客戶端本地。

localStorage:  localStorage的生命週期是永久性的。假若使用localStorage儲存資料,即使關閉瀏覽器,也不會讓資料消失,除非主動的去刪除資料。

sessionStorage:sessionStorage 的生命週期是在瀏覽器關閉前。也就是說,在整個瀏覽器未關閉前,其資料一直都是存在的。

localStorage和sessionStorage的主要方法:

        setItem (key, value) ——  儲存資料,以鍵值對的方式儲存資訊。

        getItem (key) ——  獲取資料,將鍵值傳入,即可獲取到對應的value值。

        removeItem (key) ——  刪除單個數據,根據鍵值移除對應的資訊。

        clear () ——  刪除所有的資料

        key (index) —— 獲取某個索引的key

該專案遇到的問題使用sessionStorage解決。以下為具體程式碼。

//點選跳轉
function goDesc(){
    //跳轉之前將區域性頁面儲存到sessionStorage物件中。
	window.sessionStorage.setItem("myhtml",$("#shop_list").html());
	window.location.href="http://www.baidu.com";
}

//頁面重新整理
window.onload=function(){
    //讀取sessionStorage物件中的內容
	var myhtml= window.sessionStorage.getItem("myhtml");
    //不為空表示是返回上一步進入該頁面的。
	if(myhtml!=null){
        //將sessionStorage物件中儲存的頁面新增到頁面中
		$("#shop_list").html(myhtml);
        //清空sessionStorage物件的內容。
		window.sessionStorage.clear();
	}
}

注意:只要瀏覽器不關閉,sessionStorage中的內容是不會清空的,所以在新增完內容要手動清空內容。