2012-01-26 75 views
2

我有選項卡,其中每個選項卡使用ajax加載。我不想緩存(我希望在任何時候選項卡都被粘貼)。我創建選項卡如下:
$('#tabs').tabs({ ajaxOptions: { cache: false}, spinner: 'Loading task...' });jQuery UI選項卡第一次加載選項卡緩存,雖然ajaxOptions:緩存:假指定

由於上述,當我點擊一個標籤,一個特殊的變量被附加:
http://localhost:3252/Task/Show/2?_=1327576289684
它防止防止緩存通過使URL唯一的,所以該請求是總是發送到服務器。

但是,當我用選項卡打開頁面時,它們將被初始化並加載默認選項卡(任務1)。在這種情況下,變量不會被追加:
http://localhost:3252/Task/Show/1
這會導致頁面從緩存中加載。

@<div id="tabs"> 
    <ul> 
     @Code 
      For Each task In Model.Tasks 
       @<li><a href="@[email protected]"><span>@task.Name (@task.Number)</span></a><span class='ui-icon ui-icon-close'>Remove task</span></li>     
      Next 
     End Code 
    </ul> 
    @*@Html.EditorFor(Function(m) (m.Tasks))*@ 
</div> 

的問題是:爲什麼我必須這樣做

我通過改變標籤URL包含每個請求的唯一編號(在我的情況蜱)改變行爲?是不是你想用ajaxOptions: { cache: false}來解決?有沒有人遇到過這個問題,並找到了一個很好的解決方案?我錯過了什麼,或者它是一個錯誤?

回答

0

你有沒有嘗試強制主jQuery Ajax設置緩存爲false?這可能是因爲您需要一個默認設置來覆蓋所有ajax請求。你可以把這個文檔準備:

// Force requested pages not to be cached by the browser 
$.ajaxSetup({cache:false}); 

文檔以供參考:http://api.jquery.com/jQuery.ajax/

+0

我想你說的話,但沒有運氣。即使它起作用,那麼描述的行爲對你來說也是邏輯嗎? –

+0

好的...我看到你已經在html鏈接中添加了一個時間戳到你的URL:'@ task.Url?_ = @ DateTime.Now.Ticks'你可以添加一個時間戳到初始URL或GET參數嗎?這很可能會對其進行分類。 –

+0

問題已解決,因爲您可以在我的原始文章中閱讀。我的問題是我不喜歡我需要以自己的方式解決這個事實。我也很好奇爲什麼'ajaxOptions:{cache:false}'不適用於默認加載的第一個標籤... –

相關問題