项目经理最近返回了一些问题:

(客户浏览器为IE11,本地360,谷歌没发现任何问题)

1、加载页面时下拉框中没有数据,关闭之后再打开出现数据;

2、数据保存之后页面没有刷新;

我也是接手别人的项目,发现问题之后开始尝试解决问题

首先,查看兼容性,我们公司的系统前端用的是easyui这个前端UI框架,查看兼容性兼容IE10以上,客户浏览器是IE11,框架应该没有问题。

还原一下客户出现的问题:

这是代码:

按F12进行检查,发现第一次打开该页面的时候请求报错302,但是第二次打开的时候请求正常,很奇怪:

第一次打开:

关闭,第二次打开,发现正常展示了:

查看网络:

好奇怪啊,然后根据这个现象,想出了一个简单快速解决该问题的方法:

我执行两次加载下拉框的方法就行了,我打开一次页面发送两个请求,测试发现问题解决了,下拉框出现数据了。

但是总是感觉这个方法不是特别的靠谱,虽然说暂时性的解决了这个问题。

好景不长,再次测试的时候发现在该页面添加数据点击保存按钮重新打开数据没有刷新,查看数据库已经保存完毕,怎么回事呢,

查看网络发现所有的请求后面都带上了(来自缓存)这个标签:

数据库中是存在的:

那么,问题又来了,怎么清楚这么缓存呢:答案是找度娘。

网友们给出了两个方法:

第一,将get请求变为post请求(这也是大多数网友推荐的)。实测结果:一直重复发出请求,game over。

幸好还有第二种方法,给url请求后面加上随机数。我感觉随机数相同的几率也不小,所以我加的是时间戳,保证每次的请求都是新鲜的:

问题解决了:

但是,新的问题又来了,数据不见了:

看来之前那种方法执行两次方法确实不靠谱,执行两次方法数据可以正常显示应该与浏览器的缓存机制有关系。

反过头来继续查看刚才的问题吧,为什么数据会出不来呢?通过对比成功和失败的url最后找到的问题:

ajax发出的请求如果是post请求的话,末尾的 / 可以不加,但是如果是get请求且携带有参数的话,必须的加上(真的特别容易忽视这个问题),然后测试:

完美!那是不是所有的问题都能这么解决呢,答案是错误的。

我们前端用的是easyui这个前端框架,当我在datagrid的url里面用这个方法的时候发现表格刷新时时间戳没发生变化,还是缓存,纠结。

最后发现了一种方法,利用js关闭ajax的缓存机制:

OK,到此,所有的问题都完美解决了。

IE浏览器下ajax和缓存的那些事儿的更多相关文章

  1. chrome浏览器的跨域设置 Google Chrome浏览器下开启禁用缓存和js跨域限制--disable-web-security

    chrome用户默认路径 Win7:C:\Users\[用户名]\AppData\Local\Google\Chrome\User Data\XP:C:\Documents and Settings\ ...

  2. IE浏览器下ajax缓存导致数据不更新的解决方法

    摘自:http://www.iefans.net/ie-ajax-json-shuju-huancun/ 最近做设计的时候遇到一个小问题,当你用jquery的getjson函数从后台获取数据的时候,I ...

  3. IE浏览器下AJAX缓存问题导致数据不更新的解决办法

    一直知道使用ajax的时候,有的时候会出现数据缓存的问题,当时也没有深究,就是所有的简单粗暴的全部加上cache:false,或者使用在url处加上随机时间函数 今天无意间看见了为什么会出现缓存的原因 ...

  4. ie 浏览器下ajax请求来自缓存的解决方法

    如上图所示,在ie浏览器下发出的请求,如何缓存中已经出现过这条请求记录,则不会请求服务端数据,解决方法是在请求后增加一个随机数,使每次请求都不同*可以添加当前时间戳 url+'?t='+Date.no ...

  5. 解决$.getJSON在IE浏览器下出现数据缓存,第一次访问某个后台路径之后,再次访问该路径不再走后台的方法。

    最近写代码的时候遇到一个小问题,我用的是火狐,项目里测试人员用的是IE,当用jquery的getjson函数从后台获取数据的时候,IE浏览器会自动设置缓存,如果此时你对数据进行修改的时候刷新页面,IE ...

  6. IE浏览器关于ajax的缓存机制

    IE浏览器对于同一个URL只返回相同结果.因为,在默认情况下,IE会缓存ajax的请求结果.对于同一个URL地址,在缓存过期之前,只有第一次请求会真正发送到服务端.大多数情况下,我们使用ajax是希望 ...

  7. IE浏览器中ajax使用缓存数据的问题

    今天做了一个小功能:点击鼠标实时更新系统时间,采用ajax,过程很顺利,没遇到啥差错,谷歌,火狐,欧鹏一律通过,怀着忐忑的心情点开了IE8,果然,IE要对得起前端杀手的称号:更新不了时间. 查了一下这 ...

  8. IE浏览器下使用AJAX登陆接口请求缓存与登陆不了的问题解决

    问题: 在IE浏览器下面,登陆的时候老是登陆不上,但是打开控制台的时候再登陆却能登陆上. 分析: 通过抓包,发现,在不打开控制台的时候,少了一个接口的请求,却返回了改接口的返回信息,但是返回信息并不是 ...

  9. IE浏览器下异步请求的缓存问题

    问题: 在做即时通讯时,需要提示用户有几条未读的提醒,这个是(如果有新的提示消息立马在浏览器无刷新提示)即时获取的.但我们的做法是,当用户点击未读信息进入到信息显示页面时重新获取下未读的提醒:但是在I ...

随机推荐

  1. Python人工智能之-三大数学难点 !

    1. 微积分: 定积分与不定积分.全微分.最小二乘法.二重积分.微分方程与差分方程等... 2. 线性代数: 行列式.矩阵.向量.线性方程组.矩阵的特性和特性向量.二次型等... 3. 概率论和统计学 ...

  2. vue-cli目录结构

  3. 推荐 git community book 中文版

    官方地址:http://Git.seyren.com/index.html 或者 http://gitbook.liuhui998.com/ book@github项目地址: https://gith ...

  4. AngularJS之备忘与诀窍

    译自:<angularjs> 备忘与诀窍 目前为止,之前的章节已经覆盖了Angular所有功能结构中的大多数,包括指令,服务,控制器,资源以及其它内容.但是我们知道有时候仅仅阅读是不够的. ...

  5. SOFA 源码分析 — 自动故障剔除

    前言 集群中通常一个服务有多个服务提供者.其中部分服务提供者可能由于网络,配置,长时间 fullgc ,线程池满,硬件故障等导致长连接还存活但是程序已经无法正常响应.单机故障剔除功能会将这部分异常的服 ...

  6. win10装ubuntu双系统

    由于在win下进行web开发出现各种问题相当头疼. 所以今天折腾了一天想装个ubuntu,查看了网上好多教程,不得不说,网上的人很多都是不负责任的,教程都是过时根本就不负责任,关键的地方一笔带过,简单 ...

  7. python装饰器小计

    1.装饰器:本质是函数,是用来给其他函数添加附加扩展功能的函数,其返回值是一个函数(函数指针) 2.装饰器作用:不改变函数源代码和函数调用方式的前提下添加函数的附加功能. 3.装饰器储备知识点: A. ...

  8. PAT1029:Median

    1029. Median (25) 时间限制 1000 ms 内存限制 65536 kB 代码长度限制 16000 B 判题程序 Standard 作者 CHEN, Yue Given an incr ...

  9. PAT1003:Emergency

    1003. Emergency (25) 时间限制 400 ms 内存限制 65536 kB 代码长度限制 16000 B 判题程序 Standard 作者 CHEN, Yue As an emerg ...

  10. Oracle 服务启动关闭

    有没有感觉到,自从装上Oracle之后,电脑变卡了?卡是正常的,oracle作为大型数据库软件,运行起来是非常吃内存的. 所以对于自用的电脑来说,不使用Oracle的时候,应该把Oracle的一系列服 ...