对于Ajax在IE上读缓存的问题
最近在开发时遇到了一些关于Ajax的问题,弄了好久终于解决了。 我在开发时,发现调用的Ajax的那个Js在其他浏览器上运行正常,但在IE上运行时就出现了一个很大的问题,现在以我的开发的那个为例。例如: 我在IE中选取地址的时候出现了下列的问题: 在选取时 第一次选过的省份再一次选取的时候不会出现相对应的市级,也就是说省级的值市级的值不会改变(甚至是空的)。
省与市级不对应 (具体操作:现选江苏省,市级显示正常、在选湖南省显示也正常。再选江苏省出现如下状况)
对于这种情况,在第一次运行时不会出现这种情况。而且在其他浏览器上也不会出现这种情况。只有IE才有这个情况。 原因: 出现这种状况的原因是因为,IE浏览器在执行这段Ajax的程序时,由于先前选的省份所对应的市级的数据存在缓存数据,直接返回,没有执行代码,所以没有更新市级数据。才出现了上述的状况。
在打开那个浏览器的控制台会发现上述状况会出现 浏览器返回的结果是304,而正常的应该是200。 解决方法: 既然是由于先前有这样的数据的缓存,那么当传的值不同时也就不存在缓存的问题了。所以在传值的时候加上一个随机变量(如时间变量)例如我的原来传值的语句是这么写的, content = encodeURI(XXXX+ "_XXXXX?XX="+XX); 修改后的语句是: content = encodeURI(XXXX+ "_XXXXX?XX="+XX+" &time"=new Date()); 这样传过去的值就每次都不一样了。也就不会存在缓存的问题了。 我的这个问题就是这么解决的,希望对大家有点帮助。 第一次写博文,可能有许多的错误,希望各位大神批评和指正。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |