怎么在页面状态保持ajax

这次给大家带来怎么在页面状态保持ajax,在页面状态保持ajax的注意事项有哪些,下面就是实战案例,一起来看一下。

传统的页面,浏览器通过url访问页面,页面的内容由后台服务生成页面所有内容再发回给浏览器渲染展示。到AJAX流行的时候,很多信息为AJAX异步请求,比如:点击、翻页等。通常这种情况你一刷新浏览器,当前页面就会重置到初始状态。更不用说把看到的信息url发给好友了。

传统的状态保存在地址栏,如: www.abc.com/search?s=abc&id=23&page=3

如果通过这种方式的话,浏览器会刷新页面,如果使用锚点的话则不会刷新浏览器。具体是点击页面去请求数据的同时会改变地址栏“#”后面的值。我们翻页到第四页

如: abc.com/search#s=abc&id=23&page=4

这样还远远不够,如果用户点击“前进”“后退”,页面内容不会随之改变。之前参照网上别人的做法,用一个定时器来解决的。

/** * URL Watcher(require jQuery) * 监测url的变化 * useage: * UrlWatcher.init(50); * UrlWatcher.AddListener(function(url,isFirstLoad){ *    FrontEngine.generateFront(); * }); * */var UrlWatcher = {  "init": function (waittime) {    this.UrlArray = [window.location.href];//set current url as default    this.ListenerArray = [];    this.ResetWaitTime(waittime);  },  "AddListener": function (listener) {//add a process function    this.ListenerArray.push(listener || function () {});  },  "DeleteListener": function () {    this.ListenerArray = [];  },  "ResetWaitTime": function (time) {//start timer    if (this.IntervalHandle) {window.clearInterval(this.IntervalHandle); }    this.WaitTime = time || 1000;    this.IntervalHandle = window.setInterval(this.ListenerCall.setThis(this), this.WaitTime);  },  "ListenerCall": function () {    var self = this, url = window.location.href;    if (self.UrlArray[self.UrlArray.length - 1] === url) {return; }    window.clearInterval(this.IntervalHandle);    $.each(this.ListenerArray, function (c, listener) {      listener(url, self.UrlArray.length === 0);    });    this.UrlArray.push(url);    this.ResetWaitTime(this.WaitTime);  }};

登录后复制

Gmail 中也用了状态保持的东西,但是url是不会改变的。目前也有专门的Framework实现这种功能,比如 RSH 、 History Framework 。

之前我通过这种定时器的方法,解决了一些问题。但是,通过这种定时的方法不是实时触发的,总会有一个延时,因为是定时去不停的检测url中hash的变化。

说到hash,hash的变化在新的浏览器中是支持监测的。就是haschange 这个事件,在html5中有定义。目前,各浏览器对haschange的支持情况如下:

Gecko 1.9.2 (Firefox 3.6/Thunderbird 3.1/Fennec 1.0)

IE 8

WebKit 528+ (Safari/Google Chrome)

Opera 10.70

只要浏览器版本比以前大的,都是支持的。此外,ie8以ie7模式运行时,window下存在onhashchange这个方法,但是不会触发这个事件。可以通过 检测IE的document.documentMode 这种方法来检测。

if( ('onhashchange' in window) && ((typeof document.documentMode==='undefined') || document.documentMode==8)){   // 浏览器支持onhashchange事件   indow.onhashchange = hashChangeFire; // TODO,对应新的hash执行的操作函数} else {   // 不支持则用定时器检测的办法   setInterval(function() {     var ischanged = isHashChanged(); // TODO,检测hash值或其中某一段是否更改的函数    if(ischanged){       hashChangeFire(); // TODO,对应新的hash执行的操作函数    }  },150);}

登录后复制

还是存在ie6/7以及ie8兼容模式下的兼容性问题:不能使用浏览器的前进后退按钮保持追踪,因为这些浏览器并不为锚点的改变创建历史。

要解决这个问题,可以创建一个隐藏的iframe,通过改变iframe的hash控制ie的历史记录,如 《jQuery hashchange event》 。

相信看了本文案例你已经掌握了方法,更多精彩请关注【创想鸟】其它相关文章!

推荐阅读:

PHP+Ajax如何实现表格的实时编辑

怎么用Ajax实现动态加载数据的功能

以上就是怎么在页面状态保持ajax的详细内容,更多请关注【创想鸟】其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/2776519.html

(0)
上一篇 2025年3月8日 14:52:37
下一篇 2025年3月8日 14:52:45

AD推荐 黄金广告位招租... 更多推荐

相关推荐

  • ajax怎样实现修改功能(附代码)

    这次给大家带来ajax怎样实现修改功能(附代码),ajax实现修改功能的注意事项有哪些,下面就是实战案例,一起来看一下。 因为做的是一个内部管理系统,只用了一个主页面,所有的都不允许整个网页刷新,所以我们只能用ajax 来做,当然刚开始做也…

    2025年3月8日
    000
  • Ajax实现数据库修改和添加功能详细步骤

    这次给大家带来Ajax实现数据库修改和添加功能详细步骤,Ajax实现数据库修改和添加功能的注意事项有哪些,下面就是实战案例,一起来看一下。 修改和添加关于数据库的信息,可以用于任何的添加和修改这些数据库和前面的随笔数据库是一样的 一、显示出…

    2025年3月8日 编程技术
    200
  • 怎么使用fileinput来实现ajax异步上传

    这次给大家带来怎么使用fileinput来实现ajax异步上传,使用fileinput实现ajax异步上传的注意事项有哪些,下面就是实战案例,一起来看一下。 首先需要导入一些js和css文件 //中文包,不需要可以不用导入 登录后复制 ht…

    2025年3月8日
    200
  • 在项目中如何使用ajax请求

    这次给大家带来在项目中如何使用ajax请求,在项目中使用ajax请求的注意事项有哪些,下面就是实战案例,一起来看一下。 前言 最近在做一个针对单个节点测速的功能页面,测速的逻辑是,测上传速度时,前端传5m数据给server,记录上传和返回数…

    编程技术 2025年3月8日
    200
  • 在Ajax里使用readyState与status区别有哪些

    这次给大家带来在Ajax里使用readyState与status区别有哪些,在Ajax里使用readyState与status的注意事项有哪些,下面就是实战案例,一起来看一下。 在前几篇分析了jquery的ajax异步和同步,以及异常的一些…

    2025年3月8日
    200
  • ajax分页查询图文详解

    这次给大家带来ajax分页查询图文详解,ajax分页查询的注意事项有哪些,下面就是实战案例,一起来看一下。 (1)先写个显示数据的页面,分页查询需要那几个部分呢? 1.首先是查询的文本框输入,还有查询按钮,那么就开始写代码吧 //输入查询字…

    2025年3月8日 编程技术
    200
  • 怎么用ajax实现数据删除与查看详情

    这次给大家带来怎么用ajax实现数据删除与查看详情,用ajax实现数据删除与查看详情的注意事项有哪些,下面就是实战案例,一起来看一下。 运用bootstrap,jquery和ajax显示一些数据,附加删除功能并且点击能弹出模态框详情功能 主…

    编程技术 2025年3月8日
    200
  • ajax实现分页和分页查询功能的步奏详解

    这次给大家带来ajax实现分页和分页查询功能的步奏详解,ajax实现分页和分页查询功能的注意事项有哪些,下面就是实战案例,一起来看一下。 首先为了页面的整齐与美观,我用到了bootstrap,需要引进所需要的文件包 登录后复制 下面是页面显…

    编程技术 2025年3月8日
    200
  • Ajax不刷新页面的情况下实现分页查询

    这次给大家带来Ajax不刷新页面的情况下实现分页查询,Ajax不刷新页面的情况下实现分页查询的注意事项有哪些,下面就是实战案例,一起来看一下。 要求: 获取数据库中大量的信息显示在页面上,必然要使用到分页查询; 若不使用Ajax,而是用其他…

    2025年3月8日
    200
  • Ajax在不刷新页面的情况下实现分页查询

    这次给大家带来Ajax在不刷新页面的情况下实现分页查询,Ajax在不刷新页面情况下实现分页查询的注意事项有哪些,下面就是实战案例,一起来看一下。 今天我们要用ajax做一个分页: 实现Ajax分页: 如果可以的话加上查询条件 找一张表做分页…

    2025年3月8日
    200

发表回复

登录后才能评论