2012-08-14 137 views
1

我有一個ASP.Net應用程序,它使用jQuery的AJAX POST方法來更新DOM。jquery AJAX不刷新頁面中的ie

  1. 用戶輸入一個日期
  2. 用戶點擊一個鏈接按鈕
  3. JQuery的AJAX調用後對數據庫加載與請求的數據覈實。

一切工作正常,除非用戶手動刷新頁面在IE中。
如果他們進行更改,然後點擊瀏覽器刷新按鈕,然後再次執行這三個步驟,即使數據庫已正確更新,它也不會顯示剛剛輸入的更新數據。

它顯示了原始數據

他們必須完全關閉瀏覽器,然後重新打開它看到的變化。

這隻發生在IE中。
FF和Chrome會在刷新時顯示更改。

缺少什麼我在這裏?

+1

您的代碼在這裏失蹤。沒有,我們該如何幫助你? – 2012-08-14 10:47:43

回答

5

InternetExplorer緩存AJAX請求的URL,並會簡單地返回緩存響應,當您再次AJAX調用同一URL。謝天謝地,將cache選項設置爲false的jQuery AJAX調用將導致時間戳被附加到URL,繞過緩存。

$.ajaxSetup({cache : false}); 

把,在你的.js文件的頂部,使得它之前的任何AJAX請求執行:

爲所有的jQuery AJAX請求您可以使用$.ajaxSetup()功能,像這樣設置該選項。

+0

非常感謝,這個伎倆! – user609926 2012-08-14 13:25:37

0

我不明白你想要什麼實際的,但你的CAD這樣的事情:

  1. 創建隱藏輸入,它的值表明是否加載頁面的第一次或者這是後回來。
  2. 從裏面的代碼後面的Page_loaded()事件檢查頁面是否第一次加載和存儲一個布爾值隱藏輸入在表明這一點。
  3. 在$(文件)。就緒()來隱藏輸入值功能檢查,並根據您可以決定是讓你的jQuery的AJAX呼叫。
+1

OP表示問題只出現在IE中,但代碼在FF和Chrome中正常工作。建議可能需要更改代碼的不同實現細節服務器端和客戶端在這個階段可能有點不成熟。最好先看看爲什麼它不能在IE中工作。當然,任何腳本/ HTML OP可以發佈會有助於這件事。 – Nope 2012-08-14 11:15:39

+0

感謝您的建議。下面的答案解決了我的問題。 – user609926 2012-08-14 13:26:29