2012-08-03 11 views
5

いくつかのコードホストからいくつかのjavascriptファイルをインポートしようとしています。私はJSファイルをインポートするには、これらのURLを呼び出そうとすると

$.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は?_=1344036242417を追加しますし、私は実際に私がしたいスクリプトファイルを得ることができませんでした。

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

いずれも、この問題を回避する方法のアイデアを持っていますか?前もって感謝します。

+0

コードのどのような素晴らしい作品。 +1! – adeneo

答えて

7

クエリ文字列は、実行します。

$.ajaxSetup({ 
    cache: true 
}); 

が、それはまた、他のAJAXに影響を与える可能性があるが、あなたがキャッシュにしたくないことを呼び出して、多くはdocs for getScriptで、この上でより多くありますし、少しハウツーキャッシュされたgetScrを作成する上でもありますipt関数はcachedScriptと呼ばれます。

また、真または偽渡すことによってオン/オフキャッシュを有効にするための新しいオプションを使用して機能を再定義することにより、$ .getScriptでキャッシュを有効にすることができます。

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

そして、今私はdownvotedになっていますか? – adeneo

+0

ありがとうございます。私はあなたに投票した。 – sozhen

2

追加されたクエリ文字列は、キャッシュを防止するためです。あなたはenabling cachingすることによって、これを無効にすることができます

$.ajaxSetup({ 
    cache: true 
}); 
+0

すぐに構文エラーを無視してください。 OPのコードは、404エラーを除いてある程度はっきりと働いています。 –

+1

うわー、本当に? 1.間違った回答を投稿する2.修正する3.回答を削除する4.他の2つの回答と同じ内容を持つ回答を修正する5。評判を元に戻して刈り取る'* sigh *' –

+0

@MattBall申し訳ありません...意図的ではありません。私は他の答えを見ていない、ちょうど私の修正を望んでいた。 – McGarnagle

4

jQueryが自動的にURLを壊す_=1344036242417を、追加しています。注意:Ajax get request with useless parameterBut it 404s with the query param

Without the query param, the URL is fine

    • は、パラメータと付け加えからjQueryのを防ぐために。その答えを要約するには、を設定するには$.getScript()を呼び出す前に$.ajaxSetupを使用してください。

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

      $.ajaxSetup({ 
          cache: true 
      }); 
      
  • 5

    jQueryこのようなクエリの自動キャッシュ機構を持っています。 あなたは余分なparamは、セットアップ、次の使用を追加したくない場合は、次の

    $.ajaxSetup({ 
        cache: true 
    }); 
    

    出典:AJAXでのキャッシングはそれをオンにして削除するには、jQueryのではデフォルトでオフになっているためだhttp://api.jquery.com/jQuery.getScript/#caching-requests

    +0

    ありがとうございました。 – sozhen

    関連する問題