2011-11-11 86 views
0

我有一個web部件在一個sharepoint頁面中,向服務器請求數據。要做到這一點我想提出一個Ajax請求在我的代碼類似以下Ajax緩存問題?或者是其他東西?

function GetPeriod() { 
    var period; 
    $.ajax({ 
     url: GetBaseWSUrl() + 'MyWebService.asmx/GetPeriod', 
     type: "post", 
     dataType: "json", 
     data: JSON.stringify({}), 
     contentType: "application/json; charset=utf-8", 
     async: false, 
     success: function (data) { 
      period = data.d; 
     } 
    }); 
    return period; 
} 

裏面的Web服務MyWebService.asmx我有方法GetPeriod()這反過來查詢數據的數據庫,並返回該數據作爲JSON對象。

我遇到了一塊的代碼做以下的事情一個問題:

  1. 首先代碼調用GetPeriod()功能
  2. 然後用戶可以更改一些數據並提交更改到服務器
  3. 最後的代碼再次調用GetPeriod()功能

當我停靠的GetPeriod()功能點n°3即使這些數據正確保存在數據庫中,我也無法看到更新的數據!

起初我還以爲是同步的問題,所以我已經添加了async: false PARAM但它did'nt解決問題。 現在我想這是一個緩存問題(因爲數據已被正確保存到數據庫),所以我嘗試了cache: false param,但這些解決方案都不適用於我。

我也嘗試將數據庫置於分析中,我可以看到有效的請求被調用,即使我可以看到客戶端發出http請求的時間與查詢得到的時間之間的差異在數據庫上執行。

我完全迷失了這個....

任何幫助嗎?

+0

這是在所有瀏覽器中發生的嗎?或只是ie? – Patricia

+0

@Patricia:我只是想與IE8/9因爲共享點:)當然, – Lorenzo

+0

沒錯。在過去,我遇到了一個與cache:false選項有關的問題。我會把我如何解決它的答案。 – Patricia

回答

0

我以前碰到過這個。並解決它通過把:

$.ajaxSetup({ 
    // Disable caching of AJAX responses */ 
    cache: false 
}); 

我不知道爲什麼緩存選項爲您的$阿賈克斯的部分不工作,但這可能。

+0

謝謝帕特麗夏。我只是這樣做,但沒有... :( – Lorenzo

+0

該參數是不是堅持到您的請求的結束? – Patricia