Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/88.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript jQuery版本1.5-ajax-<;脚本>;标签时间戳问题_Javascript_Jquery_Ajax_Timestamp_Jquery 1.5 - Fatal编程技术网

Javascript jQuery版本1.5-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不会发生这种情

如果我使用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不会发生这种情况

代码示例:

$.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})

  • 使用脚本请求,例如检查不需要的URL 要添加并设置缓存的随机参数:在这些参数的预过滤器中为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.