gpt4 book ai didi

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

转载 作者:可可西里 更新时间:2023-11-01 02:06:02 26 4
gpt4 key购买 nike

如果我使用其中包含脚本标记的 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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com