2016-03-29 23 views
0

私が使用している一連のアプリケーションの共有ヘッダを読み込もうとしています。現在、私はHTMLファイルを取得し、javascriptを実行することもできます。

$("#header-container") 
    .load("http://component.balanceinnovations.dev/header.html header", function() { 
     $.getScript("http://component.balanceinnovations.dev/js/header.js");  
}); 

これは素晴らしいですが、header.jsにパラメータを渡したいと思います。だから私はこれを試みている

$("#header-container") 
    .load("http://component.balanceinnovations.dev/header.html header", function() { 
     $.get("http://component.balanceinnovations.dev/js/header.js", { cityID: '4274356' }, undefined, 'script'); 
}); 

header.jsどのようにこのパラメータを参照できますか?それが可能であれば。

+0

なぜ単にそれのロードが完了した後に '' someFunc( '4274356')のようなheader.js' 'で関数を呼び出していませんか?私が知る限り、あなたが求めていることをすることはできません。なぜなら、javascriptのダウンロードが現在のドキュメントの下で実行されるからです。これは異なるクエリー文字列を持ちます。 – Stryner

+0

$ .get(url、success)を使用すると、サーバーからJavaScriptファイルをロードすることを要求しています。スクリプトにパラメータを渡すことはできません。ロードが成功した場合は、成功コールバック関数を使用して、すでにロードされているheader.jsにパラメータを渡すことができます。 –

+0

はい、それは成功関数で動作しているようですが、header.jsがIIFEにならないように思われます。グローバル変数を保護しようとしています –

答えて

-1

可能性があります。 jQuery's websiteによれば、$ .getScript関数は "Ajax関数の省略形です。これは...と等価です"(以下の$ .ajaxコードを参照)。サーバーにデータを渡すには、$.ajax関数を使用する必要があります。 getScript pageに$アヤックス例にAjax pageからデータ属性を追加することで、それは次のようになります...

$.ajax({ 
    url: "http://component.balanceinnovations.dev/header.html", 
    data: { cityID: '4274356' }, 
    dataType: "script", 
    success: successFn 
}); 

function successFn(data) { 
    $("#header-container").html(data); 
} 
0

の$に.get(URL、成功)を使用することにより、ロードするように要求していますJavaScriptファイルをサーバーからダウンロードします。スクリプトにパラメータを渡すことはできません。

このようにすることができます。

var cityID = 4274356; 
$("#headercontainer").load("http://component.balanceinnovations.dev/header.html header", function() { 
     $.getScript("http://component.balanceinnovations.dev/js/header.js", function(data) { 
     //once download was performed then here you can pass your parameters into header.js. 
     });  
}); 


編集:あなたはheader.jsをロードする前にグローバル変数を定義し、以下のようなあなたの機能を変更することができる生命維持を用いた場合には

(function(cityID) { 
    // cityID == 4274356' 

})(cityID); 
+0

IIFEに包まれたheader.jsでこれが動作しますか? –

関連する問題