5

いくつかのコードホストからいくつかの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"

この問題を回避する方法を知っている人はいますか?前もって感謝します。

4

4 に答える 4

7

これは、ajaxでのキャッシュがjQueryでデフォルトでオフになっているためです。これをオンにして、クエリ文字列を削除するには、次のようにします。

$.ajaxSetup({ 
    cache: true 
}); 

しかし、それはキャッシュしたくない他のajax呼び出しにも影響を与える可能性があります。これについては、getScriptのドキュメントに詳しく説明されており、cachedScriptと呼ばれるキャッシュされたgetScript関数を作成する方法も少しあります。

trueまたはfalseを渡すことでキャッシュをオン/オフにする新しいオプションで関数を再定義することにより、$。getScriptでのキャッシュを有効にすることもできます。

$.getScript = function(url, callback, cache){
    $.ajax({
            type: "GET",
            url: url,
            success: callback,
            dataType: "script",
            cache: cache
    });
};
于 2012-08-03T23:48:13.487 に答える
5

jQueryこのようなクエリの自動キャッシュメカニズムがあります。追加のパラメータを追加したくない場合は、次の設定を使用してください。

$.ajaxSetup({
  cache: true
});

ソース:http ://api.jquery.com/jQuery.getScript/#caching-requests

于 2012-08-03T23:33:09.730 に答える
4

jQueryは自動的にを追加し_=1344036242417ます。これはURLを壊します。ノート:

jQueryがそのパラメーターを追加しないようにするには:Ajaxは、役に立たないパラメーターを使用してリクエストを取得します。その答えを要約するには、set$.ajaxSetupを呼び出す前にを使用します。$.getScript()cache: true

[ sic ]デフォルトで$.getScript()、キャッシュ設定をに設定しfalseます。これにより、タイムスタンプ付きのクエリパラメータがリクエストURLに追加され、ブラウザがリクエストされるたびにスクリプトをダウンロードできるようになります。以下を使用してキャッシュプロパティをグローバルに設定することにより、この機能をオーバーライドできます$.ajaxSetup()

$.ajaxSetup({
    cache: true
});
于 2012-08-03T23:31:33.587 に答える
2

追加されたクエリ文字列は、キャッシュを防ぐためのものです。キャッシュを有効にすることでこれを無効にできます:

$.ajaxSetup({
  cache: true
});
于 2012-08-03T23:30:38.047 に答える