jQuery(或者浏览器)会破坏缓存的ajax加载脚本

3
我将通过jQuery的$.ajax()调用加载一个视图页面。 我明确将“cache”选项设置为true。 应用程序中没有使用$.ajaxSetup()指定其他内容。
以下是ajax请求设置:
$(".viewDialogLink").click(function() {
    $.ajax({
        url: $(this).attr("href"),
        dataType: "html",
        type: "GET",
        cache: true,
        success: function(data) { $("#dlgViews").html(data).dialog("open"); }
    });
    return false;
});

响应成功返回。对话框打开,显示一些内容。

但是

返回的HTML中有脚本标签。例如:

<script type="text/javascript" src="http://../jsapi/arcgis/?v=1.4"></script>

现在,在响应文本中,这些看起来很正常。但是从FireBug中可以看到,实际的浏览器请求这些脚本时,在查询字符串中包含了一个缓存破坏参数。它们看起来像:

http://serverapi.arcgisonline.com/jsapi/arcgis/?v=1.4&_=1264703589546

加载的HTML中的其他资源 - CSS或图像 - 都没有在其请求中包含缓存破坏器。

发生了什么?我该如何关闭此缓存破坏器?


顺便说一下,我们正在使用jQuery 1.3.2。 - womp
这是在所有浏览器中发生还是只有火狐浏览器中?您可以使用Firebug lite在不同的浏览器中进行测试。 - Fermin
加载在IE中肯定被阻止在同一位置,尽管我还没有具体检查请求。我会去看看。 - womp
是的,在IE中也发生了。 - womp
1个回答

3

我在我的测试服务器上成功复制了你的问题。然后我把jQuery版本从1.3.2改成了1.4.1。使用jQuery 1.4.1时,它不会添加缓存破坏字符串。

 <script type="text/javascript" src="jquery-1.4.1.min.js"></script>

当然,使用1.4.1可能不是您的选择。


糟糕。我们现在只能使用1.3.2版本,但我们仍处于开发周期的早期 - 或许jQuery UI很快就会与1.4兼容,届时我们可以升级。感谢您测试这个,非常感激! - womp

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接