基于Jquery.history解决ajax的前进后退问题 - 网站

基于Jquery.history解决ajax的前进后退问题

分类:js_jQuery答疑 - 常见问题 · 发布时间:2021-10-08 18:48 · 阅读:9142

以下内容是关于Jquery.history解决ajax的前进后退问题,具体详情请看下文。本文的前提是基于后台的,所以

以下内容是关于Jquery.history解决ajax的前进后退问题,具体详情请看下文。

本文的前提是基于后台的,所以这里不会考虑seo的问题。同时,基于后台的管理系统,也不需要被收藏,所以也不会考虑刷新的这种类似直接敲网址的情况!!!

这里使用的是html5中的history.state 来解决。

网上已经有了js的开源解决方案pushState。详见pjax

但是这个方案不适合我的项目(后台项目),尤其是主要的方法有点不够用。

我使用的是  jquery.history.js  可以参考这个 history.js

看下面的代码

    

用户名

用户id

显示结果

 

提交
log:

一 先引用jquery 和history.js  的js

History.Adapter.bind(window, 'statechange', function () {  表示在点击后退 前进或history的js方法时,监控变化。当变化时执行自定义的方法。

History.pushState 有三个参数 state title 自定义的地址查询参数。
该方法往历史记录里添加数据,修改地址栏
 History.getState()  获取当前地址的state参数

三 流程

1 首先获取地址栏的参数并保存

2 绑定包含apjax类的标记的click方法, 标记可以任意,可以是div a链接 按钮等
  当点击的时候,保存执行ajax方法前的状态,保存到golbalState ,其中回调的方法从标记的funname属性中调取,title的值从标记的title属性获取,
 “globalPara":  "globalControlValue": "globalControlHtml  最好在ajax的方法中赋值,如displayinfo

3 History.pushState 添加到历史记录,并修改地址栏

4 当后退的时候,执行History.Adapter.bind中的方法,先获取state参数

5 把之前 js修改过的变量修改回原来的值  ,把之前修改的html组件的value的值改回原来的值,把修改过的html组件中的html内容恢复为原来的值,

6 重新执行原来的执行过的方法, 即CallbackFunctions中保存的方法。

标签:
jquery ajax 前进 后退

相关文章

AJAX乱码与异步同步以及封装jQuery库实现步骤详解

这篇文章主要介绍了异步通信技术AJAX乱码问题、异步与同步、手动封装一个jQuery库,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习吧

AJAX的跨域问题解决方案

跨域简单的说,就是从一个域名的网页去访问另一个域名网页的资源,下面这篇文章主要给大家介绍了关于AJAX的跨域问题解决的相关资料,文中通过实例代码介绍的非常详细,需要的朋友可以参考下

利用Ajax实现智能回答的机器人示例代码

这篇文章主要介绍了利用Ajax实现智能回答的机器人,本文结合示例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下

ajax、axios和fetch之间优缺点重点对比总结

今天被问到用没用过ajax axios,我回答经常用axios,但ajax用的比较少,下面这篇文章主要给大家介绍了关于ajax、axios和fetch之间优缺点重点对比总结的相关资料,需要的朋友可以参考下

如何通过axios发起Ajax请求(最新推荐)

Axios是专注于网络数据请求的库,相比于原生的XMLHttpRequest对象,axios简单易用。相比于Jquery,axios更加轻量化,只专注于网络数据请求,这篇文章主要介绍了如何通过axios发起Ajax请求,需要的朋友可以参考下

返回分类 返回首页