2011-06-27 65 views
0

我有一個JavaScript函數執行在頁面加載,這是這樣的:IE:網頁需要被刷新兩次

if (isTrue()) { 
    $.post("check.php", { value: 'true' }); 
} else { 
    $.post("check.php", { value: 'false' }); 
} 

check.php看起來是這樣的:

if ($_POST['value'] == 'true') { 
    $_SESSION['value'] = true; 
} else { 
    $_SESSION['value'] = false; 
} 

我的問題如果函數isTrue()更改爲返回false,並且我轉到IE,則需要刷新頁面兩次以查看它已更改。如果我再次將它設置爲true,同樣的事情,當我第一次刷新時,更改不存在,當再次刷新時,現在它們是。

這件奇怪的事情可能是什麼原因造成的?

感謝您的任何意見!

+0

你能告訴我們isTrue函數嗎?我懷疑它並不總是返回你期待的值 –

+0

聽起來像是一個緩存問題。 – Tomalak

+0

這只是一個虛擬功能。我只是追蹤了JavaScript,而且JavaScript完美地工作。這是因爲$ _SESSION,有時$ _SESSION ['value']是在內容加載後設置的,這就是爲什麼然後在第二次刷新時就沒問題了。 – luqita

回答

1

這是因爲$ _SESSION,$ _SESSION ['value']已設置,但在刷新之後纔看到該結果,因爲頁面已使用舊值加載。

0

也許某種緩存問題? 嘗試在更改後清除瀏覽器緩存,並查看是否仍需要第二次刷新。

0

這可能是jQuery AJAX緩存的結果。我自己也有類似的問題。

嘗試用此將其關閉:

$.ajax({ 
    type: "POST", 
    url: "check.php", 
    data: { value: 'true' }, 
    cache: false 
}); 

也可以嘗試擺弄的請求,以檢查是否他們實際上正在作出或不確認這是一個緩存的問題。