Javascript jQuery版本1.5-ajax-<;脚本>;标签时间戳问题
如果我使用ajax(jQuery)加载一些内容,其中包含一个脚本标记,jQuery1.5会将时间戳添加到脚本标记srcURL中。参见下面的示例 例如: 使用ajax加载的内容:Javascript jQuery版本1.5-ajax-<;脚本>;标签时间戳问题,javascript,jquery,ajax,timestamp,jquery-1.5,Javascript,Jquery,Ajax,Timestamp,Jquery 1.5,如果我使用ajax(jQuery)加载一些内容,其中包含一个脚本标记,jQuery1.5会将时间戳添加到脚本标记srcURL中。参见下面的示例 例如: 使用ajax加载的内容: <div>text1</div> <script type="text/javascript" src="/js/abc-xyz.js?r=1.1"></script> 有人知道为什么会这样吗? 只有jQuery1.5才会出现这种情况。jQuery1.4.4不会发生这种情
<div>text1</div>
<script type="text/javascript" src="/js/abc-xyz.js?r=1.1"></script>
有人知道为什么会这样吗?
只有jQuery1.5才会出现这种情况。jQuery1.4.4不会发生这种情况
代码示例:
$.ajax({
url: content.html,
type: 'GET',
data: someDataObject,
success: function(data) {
// some code here
},
error: function(data) {
// some code here
}
});
谢谢。Michael在中是正确的,如果您想禁用它,请使用: ajax请求中的缓存:true。要启用,请使用
cache:false
(我认为这是默认设置)
要禁用时间戳,请执行以下操作:
下面是我从jQuery团队得到的答案。 门票"8298: 答复: 在检查了您的报告和代码示例后,我得出结论,这不是一个bug。我还使jQuery1.4+(直到1.5)有一个bug,导致脚本请求的缓存选项不默认为false。此错误(请参阅)已在1.5中修复。 现在您可能知道或不知道的是,jQuery在执行DOM操作时会专门处理脚本标记(以防止IE中出现某些错误)。它过滤掉它们,并通过ajax请求它们。这解释了为什么即使是“普通”内联脚本标记也会突然被请求附加url参数。 如果它对你有不必要的副作用,有办法解决这个问题
$.ajaxSetup({cache:true})
var elems = $(htmlwithscripttags);
elems.filter("script") //now do whatever with the scripts
elems.filter(":not(script)").appendTo("body"); //e.g.
如果我必须使用wildgess,我会说它添加了get参数,以防止从缓存加载js文件。我想不出还有什么别的原因。但这不会破坏任何功能。你能展示你的Javascript吗?我添加了Javascript代码示例。我知道如何控制缓存。我的问题是将时间戳添加到使用ajax加载的脚本src url中。在我们的工作项目中,这个问题是由于将
$.ajaxSetup({cache:false})
添加到正在调用的插件中造成的。这种方法不是最好的,因为$.ajaxSetup对所有请求都有效。2对我来说效果很好:$.ajaxPrefilter('script',function(options){options.cache=true;})代码>
$.ajax({
url: content.html,
cache: true,
type: 'GET',
data: someDataObject,
success: function(data) {
// some code here
},
error: function(data) {
// some code here
}
});
var elems = $(htmlwithscripttags);
elems.filter("script") //now do whatever with the scripts
elems.filter(":not(script)").appendTo("body"); //e.g.