如何通过$.getScript()获取脚本文件

How to get script file by $.getScript()

本文关键字:获取 脚本 文件 何通过 getScript      更新时间:2023-09-26

我正在尝试从一些代码主机导入一些javascript文件。

    $.when(
        $.getScript('http://pingzi.googlecode.com/svn-history/r30/branches/wangqi/web/jquery.window.min.js'),
        $.getScript('http://mottie.github.com/tablesorter/js/jquery.tablesorter.js'),
        $.getScript('http://tconnell.com/samples/scroller/lib/jquery.tablesorter.scroller.js'),
        $.getScript('http://code.highcharts.com/stock/highstock.js'), 
        $.Deferred(
            function(deferred) { 
                $(deferred.resolve);
            }
        )
    ).done(function() {  
       // my function goes here....
    });

当我试图调用这些URL来导入js文件时,这些URL会附加?_=1344036242417,然后我就无法真正获得我想要的脚本文件。

即。"NetworkError: 404 Not Found - http://pingzi.googlecode.com/svn-history/r30/branches/wangqi/web/jquery.window.min.js?_=1344036242417"

有人知道如何绕过这个问题吗?提前谢谢。

这是因为在jQuery中,ajax中的缓存默认是关闭的,要打开它并删除querystring do:

$.ajaxSetup({ 
    cache: true 
}); 

但这也可能影响其他不想缓存的ajax调用,在getScript的文档中有很多关于这方面的内容,甚至还有一些关于创建缓存的getScript函数cachedScript的方法。

您还可以在$.getScript中启用缓存,方法是用一个新选项重新定义函数,通过传递true或false来打开/关闭缓存:

$.getScript = function(url, callback, cache){
    $.ajax({
            type: "GET",
            url: url,
            success: callback,
            dataType: "script",
            cache: cache
    });
};

jQuery具有用于此类查询的自动缓存机制。如果您不想添加额外的参数,请使用以下设置:

$.ajaxSetup({
  cache: true
});

来源:http://api.jquery.com/jQuery.getScript/#caching-请求

jQuery正在自动添加_=1344036242417,这会破坏URL。注:

  • 如果没有查询参数,URL就可以了
  • 但它404带有查询参数

为了防止jQuery添加该参数:Ajax获取带有无用参数的请求。要总结该答案,请在调用$.getScript()设置cache: true之前使用$.ajaxSetup

默认情况下,$.getScript()会将缓存设置设置为false。这会在请求URL中添加一个带时间戳的查询参数,以确保浏览器每次请求脚本时都会下载该脚本。您可以通过使用$.ajaxSetup():全局设置缓存属性来覆盖此功能

$.ajaxSetup({
    cache: true
});

附加的查询字符串是为了防止缓存。您可以通过启用缓存来禁用此功能:

$.ajaxSetup({
  cache: true
});