IE ajax缓存问题

在默认情况下,IE会缓存相同地址ajax请求的结果。IE的第一次ajax请求会发送到服务器端处理,如果后续的请求的参数与第一次的一样,浏览器会直接返回缓存的结果而不是去服务器获取。有时候我们希望获取实时的数据,那么该如何解决这个问题呢?只要在ajax请求中加一个时间戳参数或随机参数就可以了。jQuery ajax中提供了一个cache属性来解决浏览器的缓存问题。

cache的默认值为true, 如果设为false, 它会强制请求的页面不会被浏览缓存。设置cache为false时会在query string中追加一个"_=[时间戳]"的参数。

$.ajax({
    url: 'your url',
    type: 'GET',
    dataType: 'json',
    cache: false,  // 强制浏览器不缓存页面
    data: { 'action': 'getinfo' },
    success: function(data) {
        // TODO code here.
    }
});

 

如果使用$.get或$.post方法,这两个方法没有cache这个参数,我们只要加一个随机参数即可,如r=Math.random().

$.get(
    'your url',
    { 'action': getinfo, 'r': Math.random() },
    function(data) {
        // TODO code here.
    },
    'json'
)

 

posted @ 2013-10-11 14:24  不灭的野火  阅读(1375)  评论(7编辑  收藏  举报