ajax 请求到的数据在浏览器返回时仍然显示

FF,Chrome中使用jquery ajax请求得到的数据浏览器不会自动存储,(而IE和别的上述浏览器的缓存机制不一样,它不做添加啥都存,你想不用缓存都不行)。
利用 history.replaceState 事件,在 ajax 请求数据成功后的,修改当前 url,此时,打开新链接再返回时,就是设置成功后的 url ,该链接页面上含有 ajax 请求到的数据。
也可使用 history.pushState 方法,在 ajax 请求数据成功后,把当前页面数据写成一个新的 url ,塞进 浏览器的 history 中,这时,history 的 length 增加了 1 个。

var url;
//页面不刷新,重复提交时,避免使 url 后的参数连续拼接
if (window.location.href.lastIndexOf('ajax=async') == -1){
	url=window.location.href;
}else{
	url=window.location.href.substring(0,window.location.href.lastIndexOf('ajax=async')-1);
}
//判断 url 中有没有参数,有,则使 & 拼接,无,则是 ? 拼接,随机数 Math.random() 是为了与当前 url 区分
if(url.indexOf('?') == -1 ){
	var new_url=url+"?ajax=async"+Math.random();
}else{
	var new_url=url+"&ajax=async"+Math.random();
}
window.history.replaceState(null, null, new_url);

你可能感兴趣的:(总结)