使用jQuery发送AJAX请求时不缓存

jackxiang 2010-2-26 11:53 | |
通过jQuery发送ajax请求,无论是get方式还是post方式,当前后两次请求的参数完全一样时,浏览器就有可能调用缓存里的数据,最直接的结果就是造成有些操作没有生效的假象。这种情况,我们应该通过下面这个技巧来避免浏览器调用缓存里的内容。


先整理下思路,浏览器之所以调用缓存里的内容,最主要的一点是判定现在要访问的内容和之前的是一样的,那我们解决这个问题的方法就明确了,怎么让前后两次的内容不一样。这里介绍的技巧是为查询请求增加一个随机的参数。



对于get请求:


url = "someurl.php?id=123";url += "&anticache=" + Math.floor(Math.random()*1000)$.get(url);

对于post请求:


parms = {   id : "123",   anticache : Math.floor(Math.random()*1000)}$.post("someurl.php", parms);


小结



编写脚本的过程中,发现应该为大多数请求添加随机参数,这样可以保证获取数据的实时性和准确性。

法二,加入参数:
jQuery的ajax使用很方面,我常用的有$.ajax,$.get,$.post,但可惜自己一直没有注意到$.get回来的内容会自动缓存,所以在这里记录下:

$.ajax不缓存版:

$.ajax({
  type:"GET",
  url:'test.html',
  cache:false,
  dataType:"html",
  success:function(msg){
  alert(msg);
}
});

由于$.get,$.post,比较简单.这里就不写了.有需要查看手册


當我們設定cache=false時,jQuery在我們每次發出Request時,會補上一個參數"_",而其內容是每次皆不同的亂數,這是Javascript端很常見的迴避Cache技巧

作者:jackxiang@向东博客 专注WEB应用 构架之美 --- 构架之美,在于尽态极妍 | 应用之美,在于药到病除
地址:https://jackxiang.com/post/2729/
版权所有。转载时必须以链接形式注明作者和原始出处及本声明!


最后编辑: jackxiang 编辑于2011-2-24 11:30
评论列表
2010-2-26 16:48 | 佐薇
zanzanzanzanzanzanzanzanzanzanzanzan
分页: 1/1 第一页 1 最后页
发表评论

昵称

网址

电邮

打开HTML 打开UBB 打开表情 隐藏 记住我 [登入] [注册]