我有以下Ajax登錄腳本。 index.php
將設置會話,然後返回類似{"status":true,"msgs":[],"url":"\/demo\/administrator\/index.php"}
的內容,如果用戶名和密碼檢出。然後頁面應該重新加載,PHP腳本將檢查會話是否已設置,如果是,將顯示相應的頁面。頁面重新加載但未命中服務器
「有時」在Windows 7上運行FireFox 21.0時,頁面似乎重新加載,但之後不正確地重新顯示登錄頁面。當我說「似乎重新加載」時,使用FireBug時,我看到POST到服務器,然後我看到console.log「重新加載頁面」一段時間,然後顯示登錄頁面。如果我手動重新加載頁面,會話將檢出,並返回正確的頁面。
爲了排除故障,我在我的PHP腳本中放了一些syslog(LOG_INFO,"got here!");
,我發現它再也沒有被訪問過,因此我相信服務器在重裝後沒有被擊中。我也檢查了Apache訪問日誌,我相信它只能看到第一個POST。
任何人都可以讓我知道發生了什麼,以及如何補救?謝謝
$.post('index.php',{task:'logon',username:username,password:password},
function (data)
{
if(data.status==true){
console.log('reload page');
//window.location.href = data.url;
window.location.href = window.location.href;
//window.location.reload();
}
else {msgs.html("<ul>"+mkList(data.msgs)+"</ul>");}
},'json'
);
,如果你改變'window.location.href = window.location.href'到'window.location.reload()'會發生什麼?我不確定它是否有所作爲,但也許瀏覽器實際上並沒有發送請求,因爲'href'值沒有改變? –
@Brian。同樣的效果。我甚至返回網址的唯一原因是我可以測試'window.location.href = data.url;' – user1032531
由於某種原因它是否緩存?您從POST請求獲得什麼狀態?另外,也許嘗試'window.location.reload(true)'看看是否有所作爲。 –