Jquery 缓存为false时从缓存获取数据
我正在使用以下代码自动登录到我的电子邮件帐户:Jquery 缓存为false时从缓存获取数据,jquery,ajax,Jquery,Ajax,我正在使用以下代码自动登录到我的电子邮件帐户: $.ajax({ async: false, cache: false, type: 'POST', dataType: 'html', data: ({ '_token': token_value, '_task': 'login', '_action': 'login', '_timezone': '2', '_dstactive': '0',
$.ajax({
async: false,
cache: false,
type: 'POST',
dataType: 'html',
data: ({
'_token': token_value,
'_task': 'login',
'_action': 'login',
'_timezone': '2',
'_dstactive': '0',
'_url': '',
'_user': _username,
'_pass': _password
}),
url: 'https://mail.somesite.com/index.php',
success: function (data) {
//after login get the central email page where the email count is displayed
$.ajax({
async: false,
cache: false,
type: 'GET',
dataType: 'html',
url: 'https://mail.somesite.com/index.php?_task=mail',
success: function(data1) {
var descNode = document.createElement("div");
descNode.innerHTML = data1;
var unreadcount = descNode.getElementsByClassName("unreadcount");
/*process unreadcount etc*/
},
error: function () {
// something went wrong with the request
error_occurred();
return;
}
});
},
error: function () {
// something went wrong with the request
error_occurred();
return;
}
})
问题是,在获取类为“unreadcount”的对象以获取用户的未读电子邮件计数后,我会得到一个旧页面
例如,如果我登录到我的电子邮件帐户,看到我有2封电子邮件,我运行此功能,我会被告知我有2封电子邮件。如果我从我的帐户注销,从另一个帐户向我的帐户发送电子邮件并重新运行此功能,它将找不到新的电子邮件(它仍将仅显示2封电子邮件)。我已经尝试过使用console.log()
查看data1的内容,我非常确定该函数没有做错什么(因为'unreadcount'的值实际上仍然是2)
当然,当我正常登录时,我可以看到我的帐户中有3封电子邮件。奇怪的是,在登录(即使我在此之后注销)并运行上述功能后,它会找到第三封电子邮件
所有这些使我得出结论,我被引导到一个缓存页面,但我在任何时候都将缓存设置为false。如何避免这种情况发生?或者它不是缓存,但是服务器/您的电子邮件客户端“知道”您没有通过浏览器查看电子邮件(“因为您使用的是ajax调用”),并且没有从服务器获取新的电子邮件。我不知道这是否可能,但我可以想象服务器对这些事情的看法是不同的。不要认为这是缓存,但要确保您可以向url中添加一个唯一的参数(例如)。我应该从唯一的参数@SanderBruggeman中得到什么?我认为这不会有任何区别,主要是因为我认为这是我的第一个建议:如果您试图通过Ajax调用访问/获取页面,您的邮件客户端不会获取新的电子邮件。。唯一的参数只是为了确保它总是一个不同的url,所以它不会从缓存中获取它(我很确定它无论如何都不会,但仍然如此)。我只是想到了发生这种情况的原因:在页面加载后,您的电子邮件客户机还使用ajax调用(或类似的调用)来获取您的新电子邮件。也许它太快了,但当你通过浏览器访问你的电子邮件客户端时,有时是否需要一分钟来加载新的电子邮件?或者您的客户是否有自定义预加载程序?(我知道Gmail有,那可能也不起作用。)@SanderBruggeman是的,你是100%正确!一旦页面加载,那里就没有电子邮件计数器。但大约100毫秒后,计数器将就位!因此,你的理论是,新的电子邮件是在一些电话之后添加的,而不是立即添加的,这是正确的。有什么可能的解决办法吗?获取页面后,我是否可以“等待”此计数器取代其位置,然后获取其值,或者类似的操作是不可能的?非常感谢:)