在IE7中,jquery是否需要GET调用的时间戳?

时间:2010-06-15 10:02:20

标签: jquery ajax caching internet-explorer internet-explorer-7

请参阅下面的jQuery代码,它用于分页搜索结果

paginate: function() {
        $("#wishlistPage .results").html("<div id='snakeSpinner'><img src='"+BASE_URL+"images/snake.gif' title='Loading' alt='...'/></div>");
        var url = BASE_URL+"wishlist/wishlist_paginated/";
        $.ajax({
            type: "GET",
            url: url,
            data: {
                sort_by:$('#componentSortOrder input:hidden').val(),
                offset:My.WishList.offset,
                per_page: 10,
                timestamp: new Date().getTime() 
            },
            success: function(transport){
                $("#wishlistPage .results").html(transport);
            }
        });
    },

我的问题不在于分页,问题是当我需要调用同一个函数时,当某些内容发生在页面的其他部分删除了一些搜索结果时,它会在IE7中带来旧结果,其他浏览器工作正常。所以添加了时间戳:new Date()。getTime()部分。这解决了IE问题。

我想知道为什么在jQuery中会发生这种情况?我是否需要在URL中包含timestamp参数以避免在所有jQuery Ajax调用中进行缓存?

1 个答案:

答案 0 :(得分:10)

简而言之,。 IE不遵守通常的缓存规则,但jQuery也可以自动添加此参数,只需使用the cache: false option,如下所示:

    $.ajax({
        type: "GET",
        url: url,
        cache: false,
        data: {
            sort_by:$('#componentSortOrder input:hidden').val(),
            offset:My.WishList.offset,
            per_page: 10,
            timestamp: new Date().getTime() 
        },
        success: function(transport){
            $("#wishlistPage .results").html(transport);
        }
    });

结果相同,它为网址you can see the code here添加时间戳。