Internet Explorer Ajax调用,缓存响应问题

dav*_*ooh 1 javascript ajax jquery

我有一个javascript函数,我在等待页面中使用它来检查我的Web应用程序中的导出过程是否正在运行或已完成:

function waitForExport(token) {
    $.ajax({
        type : "GET",
        url : 'export/status',
        data : {
            token : token
        },
        success : function(data) {
            if (data.status == 'running') {
                $('#waitContent').append('<span>RUNNING</span>');
                setTimeout("waitForExport('" + token + "')", 5000);
            }
            if (data.status == 'done') {
                $('#waitContent').append('<div>DONE</div>');
                location.href = "export/results";
            }
        },
        error : function(jqXHR, textStatus, errorThrown) {
            alert(jqXHR.responseText);
        }
    });
}
Run Code Online (Sandbox Code Playgroud)

它适用于Chrome和Firefox,但不适用于IE.

使用Internet Explorer 7/8时,进程似乎始终在运行,因为除了第一次,它不会发出任何其他服务器请求(我使用Eclipse调试器验证).它似乎缓存了第一个服务器响应,然后再也没有命中服务器......

任何的想法?

Ian*_*Ian 6

您可以使用:

cache: false
Run Code Online (Sandbox Code Playgroud)

在您的$.ajax()选项对象中.

这样做是将一个附加_=[TIMESTAMP]到URL的末尾(没有[ ]).这使得浏览器认为它总是一个完全不同的请求,因为请求中使用了不同的查询字符串.