IE8/IE9下Ajax缓存问题

 更新时间:2016年07月08日 16:50:09   作者:blinkcat  
本文给大家介绍的IE8/IE9下Ajax缓存问题的解决办法,非常不错,具有参考借鉴价值,感兴趣的朋友一起看下吧

ajax简介

AJAX即“Asynchronous Javascript And XML”(异步JavaScript和XML),是指一种创建交互式网页应用的网页开发技术。

AJAX = 异步 JavaScript和XML(标准通用标记语言的子集)。

AJAX 是一种用于创建快速动态网页的技术。

通过在后台与服务器进行少量数据交换,AJAX 可以使网页实现异步更新。这意味着可以在不重新加载整个网页的情况下,对网页的某部分进行更新。

步入正题:

最近在做一个网站的登录注册框,前端使用了jquery。由于sign和login不是在单独的页面上,而是以一个弹出框出现。所以决定使用ajax来实现注册和登录功能。本以为可以一帆风顺,结果在测试的时候发现了奇怪的问题。

  在用chrome , ff , IE10+测试的时候基本没问题,但在IE8,9上运行时却出现了输入正确的用户名和密码不能登录的情况。一开始还以为是session丢失了,开始吐槽后台的框架。

  但是在耐心的调试后,发现session并没有丢失。这下可急死我了,难道混了这么久连一个注册登录都搞不定?这让我不禁妄自菲薄,感叹人生百态,世事无常。就这样过了1/3炷香之后,我决定要振作起来。

  在仔细观察我那没长几个注释的代码后,我发现$.ajax中的url有点奇怪。虽然地址是正确的,但程序猿和攻城狮的直觉告诉我,IE8 9两兄弟有可能自作多情地缓存了我的ajax。想到这里,双手突然有些颤抖,慌忙在url后加了个时间戳。

//就像这样url:myurl+"?t="+(new Date).valueOf() 

  然后清个缓存再试试,成功!可以正常登录了。

  查了查百度,原来在IE8 9下,进行Ajax请求时,若与之前请求相同,则不会再从服务器获取数据,而是直接从本地获取。

  这样,为了对付低版本IE过分的热情,在使用$.ajax时可以将其cache属性设置为false(未测试过),

      cache:

          要求为Boolean类型的参数,默认为true(当dataType为script时,默认为false),设置为false将不会从浏览器缓存中加载请求信息。

或者在全局中设置(未测试过)

//$.ajaxSetup() 方法设置全局 AJAX 默认选项。$.ajaxSetup({ cache: false }); 

  这样就不用再担心缓存了。

  但是,缓存并非是为了给我们带来麻烦而设置的,毕竟别的浏览器可以正常使用。所以,要为IE8 9单独设置禁用缓存中的信息。

//jquery 1.9.0后取消了$.browserif($.browser.msie&&($.browser.version=="8.0"||$.browser.version=="9.0")){
//做处理 
}

  在1.9.0之后可以使用$.support来判断

// IE6789,input元素的checked属性不能被拷贝// IE下,input被更换类型后,无法保持前一个类型所设的值if(!$.support.radioValue&&!$.support.noCloneChecked){
//做处理 
} 

  $.support主要用于 jQuery 的内部使用,感觉一点也不好用。

以上所述是小编给大家介绍的IE8/IE9下Ajax缓存问题 ,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对脚本之家网站的支持!

相关文章

  • Ajax 提交表单数据到入库的全盘操作流程分享

    Ajax 提交表单数据到入库的全盘操作流程分享

    以下是Ajax 提交表单数据到入库的全盘操作流程,希望本文对广大php开发者有所帮助,感谢阅读本文
    2014-01-01
  • ajax完美解决的下拉框的onchange问题

    ajax完美解决的下拉框的onchange问题

    最近老总提了一个小功能,在搜索网吧列表的时候加上网吧所属代理商这个条件,原有的搜索条件是一个地区二级联动,现在需要根据不同的地区显示不同的代理商集合。
    2010-08-08
  • 探秘ajax跨域请求

    探秘ajax跨域请求

    本文讲解的是怎么利用ajax实现跨域请求,那么知道“同源策略”,就可以解决很多疑问:“为毛我的ajax加载不了数据!”“为毛浏览器控制台会对我如此漂亮的代码报错!”这就是我们今天要主要探讨的内容了。
    2015-03-03
  • Ajax获取页面被缓存的解决方法

    Ajax获取页面被缓存的解决方法

    常利用AJAX写一些页面无刷新的内容获取页面,这种方式很快捷也很方便,但其中有一个问题,就是如果两次提交的参数相同时,返回的内容只返回上次获取的内容,如果我们在第一次修改了参数,第二次再次调用却会发现页面根本没有改变。
    2008-09-09
  • ajax动态加载json数据并详细解析

    ajax动态加载json数据并详细解析

    今天小编就为大家分享一篇ajax动态加载json数据并详细解析,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-08-08
  • 如何实现ajax延时发送在空闲之后去发送ajax请求

    如何实现ajax延时发送在空闲之后去发送ajax请求

    关键字搜索的功能,还是比较实用的,在实现过程中就需用到ajax延时发送,下面有个不错的示例,有需要的朋友可以参考下
    2013-12-12
  • ajax动态查询数据库数据并显示在前台的方法

    ajax动态查询数据库数据并显示在前台的方法

    今天小编就为大家分享一篇ajax动态查询数据库数据并显示在前台的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-08-08
  • 使用$.getJSON实现跨域ajax请求示例代码

    使用$.getJSON实现跨域ajax请求示例代码

    getJSON调用并获取远程的JSON字符串,将其转换为JSON对象,如果成功,则执行回调函数,下面有个不错的示例,需要的朋友可以参考下
    2013-11-11
  • 编写轻量ajax组件02--浅析AjaxPro

    编写轻量ajax组件02--浅析AjaxPro

    ajaxpro虽然是一个比较老的组件,不过实现思想和源码还是很有借鉴价值的。接下来通过本篇文章给大家介绍编写轻量ajax组件02--浅析AjaxPro,感兴趣的朋友可以参考下
    2015-11-11
  • Ajax请求超时与网络异常处理图文详解

    Ajax请求超时与网络异常处理图文详解

    最近在项目中遇到一个问题,当加载数据量特别大的时候会出现加载超时现象,所以这篇文章主要给大家介绍了关于Ajax请求超时与网络异常处理的相关资料,需要的朋友可以参考下
    2021-05-05

最新评论