我在等待页面中使用了这个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);
}
});
}
适用于Chrome和Firefox,但不适用于IE。
使用Internet Explorer 7/8时,进程似乎始终在运行,因为除了第一次,它没有发出任何其他服务器请求(我使用Eclipse调试器进行了验证)。它似乎缓存了第一个服务器响应,然后再也没有命中服务器......
有什么想法吗?
答案 0 :(得分:6)
您可以使用:
cache: false
在您的$.ajax()
选项对象中。
这样做会在网址的末尾添加_=[TIMESTAMP]
(不包含[ ]
)。这使得浏览器认为它总是一个完全不同的请求,因为请求中使用了不同的查询字符串。