2010-01-15 45 views
1

我有一個MVC應用程序,使用jQuery ajax(post)完成大量工作,以檢索客戶信息並將其加載到網頁。 問題是,在Internet Explorer 7上,當我點擊兩次鏈接,通過ajax($ .post或$ .getJSON)檢索信息時,信息不會刷新;它會顯示我點擊的第一個客戶的信息,而不是第二個客戶的信息,所以信息是錯誤的。我試圖對代碼進行調試,在第二次點擊時,它甚至沒有進入從數據庫中檢索數據的操作。jQuery與json

我懷疑問題在於瀏覽器緩存,但我不知道如何處理它。

我附上我的代碼,它的做工精細,期待我前面提到的問題:

$.getJSON(pathSite + 'PorServiceQuery/GetJsonInfo', {}, 
       function(resp) { 
        $('#txtPhone').attr('value', resp.ClpCustomerPhone); 
        $('#txtCelPhone').attr('value', resp.ClpCelPhone); 
        $('#txtEmail').attr('value', resp.ClpEmail); 
       }); 
+0

您是否收到了JavaScript錯誤? – 2010-01-15 17:44:10

+0

不,我沒有得到任何JS錯誤,那是奇怪的事情!我不明白爲什麼探險家7的行爲如此。 – lidermin 2010-01-15 18:07:28

回答

0

的解決方案是使用$.post代替$.getJson,原因是該做的getJSON一個HTTP GET,這就是爲什麼我沒有看到我的數據刷新。

0

如果用戶的初始響應返回前兩次點擊我見過這種行爲。你確定這不是發生了什麼事(不管瀏覽器)?您可能需要嘗試使用Fiddler來確認請求何時發生與何時返回以及何時用戶正在點擊。

另一個想法是,您可以設置IE緩存設置,以始終檢查新版本的頁面。

+0

嗨,謝謝你的解決方案。設置IE緩存適用於我的問題,但有沒有另一種方式?因爲我無法控制我的客戶瀏覽器設置?再次感謝。 – lidermin 2010-01-15 18:34:48

+0

您可以確保URL請求不同,但這可能不適用於Web服務設置的方式,或者可能需要使用GET而不是POST。我必須在某個時候這樣做,基本上我只是在AJAX URL中添加一個隨機數(或基於計時器的數字)作爲虛擬參數。這保證了URL不同,瀏覽器不應該緩存它。您可能還想檢查服務本身,並查看是否可以在響應中設置緩存控制設置。 – 2010-01-15 19:45:32