为什么这个JQuery Ajax不会被缓存

时间:2011-09-25 15:33:03

标签: jquery ajax

这是我的剧本。我希望缓存结果,但如果我的鼠标再次输入,它会继续发送请求的请求。

$('.poplist li').mouseenter(function(){
    t=$(this).parent().attr("rel");
    i=$(this).attr("rel");
    $.ajax({
        url:"/j/place",
        data:{"t":t,"tid":i},
        cache:true,
        success:function(data){
            data= jQuery.parseJSON(data);
            s=$('.left[rel='+t+']');
            s.find('.intro').html(data["intro"]);
            s.find('.shop-avat img').attr("src","http://img.douban.com/u/plao/"+data['img']);
        }
    })
})

2 个答案:

答案 0 :(得分:1)

当设置为cache时,jQuery.ajax的true选项 nothing ,并且缓存完全由浏览器完成。但是,如果将其设置为false,则会将高速缓存破坏时间戳附加到请求中。就这样。

更新: 要查看是这样,请查看jQuery.ajax的源代码,版本1.6.4,第676行,这里:https://github.com/jquery/jquery/blob/1.6.4/src/ajax.js#L676

答案 1 :(得分:0)

一个简单的解决方案是,

您可以将结果(data)保存在变量中,并且可以在ajax请求之前使用if函数。在鼠标输入时,如果变量没有存储数据,则触发ajax请求,否则返回false。