次のコードを使用して、メール アカウントに自動的にログインしています。
$.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 つのメールしか表示されません)。私は data1 の内容を見ようとしましたconsole.log()
が、関数が何も悪いことをしていないことを確信しています (「unreadcount」の値は実際にはまだ 2 であるため)。
もちろん、通常ログインすると、アカウントに 3 つのメールがあることがわかります。奇妙な (?) ことは、ログイン後 (ログアウトしても、この後) 上記の関数を実行すると、3 番目のメールが見つかることです。
これらすべてにより、キャッシュページに誘導されたという結論に至りましたが、キャッシュを常に false に設定しました。どうすればこれを回避できますか?