我想让我的一个页面在每次用户加载页面时触发一个javascript AJAX调用,即使他回到浏览器历史记录中的页面。所以我把这个函数放在我的jsp中(我使用的是jQuery Mobile):
$(document).on(
"pageinit",
"#base-layout",
function() {
$.ajaxSetup({ cache: false });
myFunction(urlEndpoint);
});
仅使用此代码和javascript函数:
function myFunction(url) {
var currentTime = new Date();
var n = currentTime.getTime();
var epUrl = url + "?nocache" + n;
$.ajax({
url : epUrl,
dataType: "json",
method: "post",
headers : { "cache-control": "no-cache" },
cache:false,
}).done(function(data) {
//do something
});
}
即使按下后退按钮,我设法让Chrome,Firefox和IE实际启动了ajax调用。但我无法让Safari显示这种行为。无论我尝试什么,它都不会通过我的服务器端功能。
正如您所看到的,我尝试禁用ajax调用的缓存,并通过appendind将当前时间更改端点URL,无效。我甚至试图把
response.setHeader("Cache-Control", "no-cache, no-store, must-revalidate");
在我的控制器方法上,但它也没有工作。回到历史页面时,我无法让Safari调用此功能。