通过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技巧
先整理下思路,浏览器之所以调用缓存里的内容,最主要的一点是判定现在要访问的内容和之前的是一样的,那我们解决这个问题的方法就明确了,怎么让前后两次的内容不一样。这里介绍的技巧是为查询请求增加一个随机的参数。
对于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 | 佐薇
分页: 1/1 1