0

ajaxを使用してクロスドメイン.jsファイルにアクセスしようとしています:

$.ajax({
    type:'get',
    crossDomain:true,
    url: "http://localhost/62588/scripts/bootStrapper.js",
    contentType: "application/json",
    dataType: 'jsonp'    
}).done(callback);

現在、コールバックがあります。

getBootStrapperScript(function (callback) {         
       //do somethibg
})

次のエラーが発生します。

XMLHttpRequest cannot load http://localhost/62588/scripts/bootStrapper.js. Origin http://localhost:62607 is not allowed by Access-Control-Allow-Origin.

JSONPについて読んでいますが、JSONPを使用してanoatherドメインから.jsファイルをロードする方法がわかりません。

上記のコードを変更してデータ型に「jsonp」を使用すると、次のエラーが発生します。

GET http://localhost/62588/scripts/bootStrapper.js?callback=jQuery18206067646441515535_1354459693160&_=1354459696966 404 (Not Found) 

クロスドメインのjsファイルをロードするにはどうすればよいですか?

4

1 に答える 1

6

AJAXは使用せず、次の$.getScript関数を使用してください。

$.getScript('http://localhost/62588/scripts/bootStrapper.js').done(callback);

ご存知のように、同一生成元ポリシー<script>に違反することなく、タグを任意のドメインに向けることができます。それがJSONPの基本です。ただし、JSONPは必要ありません。必要なのは、リモートドメインからスクリプトを参照することだけです。これは、タグをこのスクリプトにポイントするのと同じくらい簡単です。または、jQueryが提供する機能を動的に使用する場合は、君。<script>$.getScript


アップデート:

この$.getScript関数は、ランダムなキャッシュ無効化パラメーターをURLに追加します。cachedScript スクリプトのキャッシュバージョンを取得する場合は、ドキュメントに示されているようにカスタム関数を定義できます。

jQuery.cachedScript = function(url, options) {
    options = $.extend(options || {}, {
        dataType: 'script',
        cache: true,
        url: url
    });
    return jQuery.ajax(options);
};

その後:

$.cachedScript('http://localhost/62588/scripts/bootStrapper.js').done(callback);
于 2012-12-02T15:01:38.777 に答える