1. 程式人生 > >頁面載入進入後臺,回來重新整理,且只重新整理一次,避免無限重新整理

頁面載入進入後臺,回來重新整理,且只重新整理一次,避免無限重新整理

在很多的時候,我們想在頁面載入的時候去後臺讀取資料,這時可以用ajax進入後臺查詢資料庫,然後將資料傳輸回來,但是傳輸回來的資料可能需要重新整理才能顯示出來,我們知道,ajax有回撥函式success和error,我們可以把重新整理寫在回撥函式裡面,但是問題還是有的,重新整理就是重新載入頁面,那麼又會執行ajax,這就陷入了無限重新整理了,這時可以用sessionStorage來解決,不過整體效果好像不是很好
<%@ page language="java" contentType="text/html; charset=UTF-8"
	pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
<script type="text/javascript" src="jquery-3.2.1/jquery-3.2.1.js"></script>
<script type="text/javascript" src="jquery-3.2.1/jquery-3.2.1.min.js"></script>

<script type="text/javascript">
	window.onload = function() {//頁面載入完成執行函式
		if (!sessionStorage.getItem("firstpageflag")) {//sessionStorage是h5的新元素,
			//這個可以設定一個像是session鍵值對的東西(具體我不是很瞭解),他是儲存在瀏覽器端的,瀏覽器關閉時清除,
			//這裡的原理是:瀏覽器開始是沒有這個鍵值對的,然後進入if裡面,進入之後就設定,只要瀏覽器沒關,下次就進入不了了,因為已經設定了
			sessionStorage.setItem("firstpageflag", 1);
			$.ajax({
				type : "post",
				async : false,
				url : "goods?action=GetGoods",//我這裡是進入後臺查詢資料庫
				datatype : "json",
				success : function(data) {
					window.location.reload();//當查詢完成之後,查詢成功,回來執行這個函式,所以在這個函式裡面寫重新整理,
					//重新整理的時候由於sessionStorage已經設定了,所以不會再次執行ajax,這樣就實現了ajax只執行一次
				},
			})
		}
	}
</script>
</head>
<body>
	xjassjcns
	<%
	String s = (String) session.getAttribute("xgz");//這是查詢資料庫設定的session鍵值對,可以在前端獲取
%>
	<%=s%>
</body>
</html>