页面载入进入后台,回来刷新,且只刷新一次,避免无限刷新

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/xgz1442339473/article/details/78574651
在很多的时候,我们想在页面载入的时候去后台读取数据,这时可以用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>

展开阅读全文
博主设置当前文章不允许评论。

没有更多推荐了,返回首页