缓存了jQuery UI选项卡首次加载的选项卡,但是指定了ajaxOptions:cache:false

时间:2012-01-26 11:19:15

标签: jquery ajax caching razor jquery-ui-tabs

我有使用ajax加载每个标签的标签。我不想缓存(我希望任何时候选项卡被cliked ajax请求)。我创建了以下标签:
$('#tabs').tabs({ ajaxOptions: { cache: false}, spinner: 'Loading task...' });

由于上述原因,当我点击一个标签时,会附加一个特殊变量:
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="@task.Url?_=@DateTime.Now.Ticks"><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>

问题是:为什么我必须这样做?你不想用ajaxOptions: { cache: false}来解决这个问题吗?有没有人遇到过这个问题,并找到了一个很好的解决方案呢?我错过了什么或者它是一个错误吗?

1 个答案:

答案 0 :(得分:0)

您是否尝试过将主jQuery ajax设置缓存强制为false?可能需要一个覆盖设置作为覆盖所有ajax请求的默认设置。您可以将它放在准备好的文档中:

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

参考文档:http://api.jquery.com/jQuery.ajax/