我有使用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}
来解决这个问题吗?有没有人遇到过这个问题,并找到了一个很好的解决方案呢?我错过了什么或者它是一个错误吗?
答案 0 :(得分:0)
您是否尝试过将主jQuery ajax设置缓存强制为false?可能需要一个覆盖设置作为覆盖所有ajax请求的默认设置。您可以将它放在准备好的文档中:
// Force requested pages not to be cached by the browser
$.ajaxSetup({cache:false});