javascript - jQuery version 1.5 - ajax - <script> 标签时间戳问题

标签 javascript jquery ajax timestamp jquery-1.5

如果我使用其中包含脚本标记的 ajax (jQuery) 加载一些内容,jQuery 1.5 会将时间戳添加到脚本标记 src url。请参见下面的示例。

例子: 满足我用 ajax 加载的内容:

<div>text1</div>
<script type="text/javascript" src="/js/abc-xyz.js?r=1.1"></script>

这是我将之前的内容插入页面后加载脚本代码的 src url:

.../js/abc-xyz.js?r=1.1&_=1297892228466

有人知道为什么会这样吗? 它只发生在 jQuery 1.5 中。 jQuery 1.4.4 不会发生这种情况。

代码示例:

$.ajax({
    url: content.html,
    type: 'GET',
    data: someDataObject,
    success: function(data) {
        // some code here

    },
    error: function(data) {
        // some code here
    }
});

谢谢。

最佳答案

请参阅下面我从 jQuery 团队返回的答案。 票 #8298:http://bugs.jquery.com/ticket/8298

回答:

在检查了您的报告和代码示例后,我得出的结论是这不是错误。我也做了this test case jQuery 1.4+(直到 1.5)有一个错误导致脚本请求的缓存选项不默认为 false。此错误(请参阅 #7578)已在 1.5 中修复。 现在您可能知道或不知道的是,jQuery 在执行 DOM 操作时会执行特殊处理脚本标记(以防止 IE 中的某些错误)。它过滤掉它们并通过 ajax 请求它们。这就解释了为什么即使是“正常”的内联脚本标签也会突然被要求使用额外的 url 参数。 如果它对您有不必要的副作用,有一些方法可以解决这个问题。

  1. 在适当的时候使用$.ajaxSetup({ cache: true })

  2. 使用 prefilter对于脚本请求,例如检查你不想要的网址 要添加的随机参数并在预过滤器中设置 cache: true

  3. 例如成功回调通过执行这些操作自己处理脚本标记。

..行:

var elems = $(htmlwithscripttags);
elems.filter("script") //now do whatever with the scripts
elems.filter(":not(script)").appendTo("body"); //e.g.

关于javascript - jQuery version 1.5 - ajax - &lt;script&gt; 标签时间戳问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5022557/

相关文章:

javascript - 更改 jQuery 中具有相同类的每个元素的元素文本

javascript - webOS 编程中相互依赖的回调

jQuery AJAX POST 请求在 ie9 中丢弃正文

javascript - jQuery POST,错误 405 方法不允许

jquery - .val() 到 .text() 使用/与最接近并查找

javascript - 无法使用ajax和php上传多个文件

javascript - Bootstrap 插件导致页面在移动设备上水平滚动

javascript - 如何下载文本文件并将其存储为 jQuery 中的字符串

javascript - 在 OnClick 事件中传递 JSON

javascript - 在 React 中解释一下这个 render prop