当前位置:首页 > 日记 > 正文

解决浏览器记住ajax请求并能前进和后退问题

解决浏览器记住ajax请求并能前进和后退问题

在我们浏览不同网页的时候,我们可以通过浏览器的前进、后退键来去到我们前后访问过的页面。这都有一个共同点,就是 浏览器地址栏的地址改变了。浏览器自身维护了一个记录用户访问页面历史的栈,栈中记录了用户访问不同页面的先后顺序。

但是在开发中,我们经常会用到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请求并能前进和后退方法(一),希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对网站的支持!

相关文章

WPS演示插入背景音乐的方法是什么

WPS演示插入背景音乐的方法是什么

方法,背景音乐,演示,电脑软件,WPS,  制作PPT的时候,需要加入一些元素使得PPT更加吸引人,其中给PPT加入背景音乐是常用的方法之一。那么在wps中,这个方法应该怎么使用,一起来探讨一下。以下是小编为您带来的关于WPS演示插入背景音乐的方法,希望…

JavaScript定义函数的三种实现方法

JavaScript定义函数的三种实现方法

方法,函数,三种,定义,电脑软件,JavaScript定义函数的三种实现方法【1】正常方法function print(msg){ document.write(msg);}对函数进行调用的几种方式: 函数名(传递给函数的参数1,传递给函数的参数2,….)变量 = 函数名(传递给函数的参数1,传递给…

详解JS中的立即执行函数

详解JS中的立即执行函数

立即执行函数,详解,电脑软件,JS,1.匿名函数不能单独定义,必须进行赋值操作或者立即执行,否则会被JS引擎定义为语法错误function(){alert(dada);}VM229:1 Uncaught SyntaxError: Unexpected token 2.在函数体后面加括号就能立即调用,这个函数形…

JS倒计时实例_天时分秒

JS倒计时实例_天时分秒

分秒,天时,倒计时,实例,电脑软件,HTML代码:<div id="times_wrap" class="time_num"> 距离结束时间: <div class="time_w"> <b id="times_d" class="time"> </b>天 <b id="times_h" class="time"> </b>时 <b id="times_m" …

Word中进行设置半透明的操作方法

Word中进行设置半透明的操作方法

设置,半透明,操作方法,操作步骤,电脑软件,  在我们使用word的时候经常会往里面插入一些图片,在word中,我们还可以将图片的背景颜色更改为半透明色,还可以做些其他的改动。今天,小编就教大家在Word中进行设置半透明的操作方法。Word中进行设置…

photoshop cs6怎么替换颜色 photos

photoshop cs6怎么替换颜色 photos

替换,教程,颜色,植物,电脑软件,如果发现自己的照片颜色不理想,想要替换颜色怎么办?其实我们可以使用ps任意替换颜色。那么,如何使用photoshop cs6替换颜色呢?下面小编就给大家介绍photoshop cs6给植物图片替换颜色的方法,一起去看看吧!方法/步骤:1…

js绑定事件和解绑事件

js绑定事件和解绑事件

事件,绑定事件,电脑软件,js,在js中绑定多个事件用到的是两个方法:attachEvent和addEventListener,但是这两个方法又存在差异性attachEvent方法 只支持IE678,不兼容其他浏览器addEventListener方法 兼容火狐谷歌,不兼容IE8及以下addEvent…

ps怎么制作冲击波效果的?

ps怎么制作冲击波效果的?

冲击波,效果,电脑软件,ps,利用Photoshop制作冲击波效果其实主要应用了滤镜的各种功能,现在就把制作的步骤和截图分享给大家,希望对你有所帮助,本经验仅供参考使用。软件名称:Adobe Photoshop 8.0 中文完整绿色破解版软件大小:150.1MB更新时间:201…

excel制作数据汇总表的教程excel怎

excel制作数据汇总表的教程excel怎

数据,教程,汇总表,电脑软件,excel,  Excel中经常需要用到数据汇总的功能对数据进行汇总统计,数据汇总表可以帮助用户快速看清数据的数目,数据汇总表具体该如何制作呢?接下来是小编为大家带来的excel制作数据汇总表的教程,供大家参考。excel…

JS中IP地址与整数相互转换的实现代

JS中IP地址与整数相互转换的实现代

相互转换,地址,整数,代码,电脑软件,主要用于在js判断用户输入的一个ip段是否合法,如:192.168.1.11-192.168.1.134实现代码一:function ipToNumber(ip) { var num = 0; if(ip == "") { return num; } var aNum = ip.split(".…

怎么压缩ppt2010的x

怎么压缩ppt2010的x

压缩,电脑软件,  我们在使用ppt2010过程中,如果插入了很多图片,导致ppt整体文件很大,那么我们完全可以使用图片压缩功能,下面小编就教你如何压缩ppt2010中的图片。ppt2010压缩图片的步骤:  打开ppt2010后,新建幻灯片,并插入图片,如下图就是小编…

Excel滚动条消失了怎么办Excel找回

Excel滚动条消失了怎么办Excel找回

滚动条,方法,消失了,电脑软件,Excel,  在日常的工作中,经常要使用Excel文件交流处理数据,打开Excel文件,有时会看不到滚动条,这可能是朋友在制作Excel文件时做了一些&ldquo;手脚&rdquo;。要想在自己电脑上恢复滚动条,做一些设置就行了。下面小…