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

Mit*_*ran 4 ajax jquery internet-explorer caching 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);
            }
        });
    },
Run Code Online (Sandbox Code Playgroud)

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

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

Nic*_*ver 10

简而言之,是的.IE不遵守正常的缓存规则,但jQuery也可以自动添加此参数,只需使用如下cache: false选项:

    $.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);
        }
    });
Run Code Online (Sandbox Code Playgroud)

结果是一样的,它为URL添加了一个时间戳,你可以在这里看到代码.