2016-03-29 20 views
0

Ich versuche, einen freigegebenen Header für eine Reihe von Anwendungen, die wir verwenden, zu laden. Momentan kann ich eine HTML-Datei einlesen und sogar Javascript ausführen.

Das funktioniert gut, aber ich würde header.js einen Parameter übergeben. So versuche ich diesen

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

In header.js wie kann ich diesen Parameter verweisen? Wenn es überhaupt möglich ist.

+0

Warum rufen Sie nicht einfach eine Funktion in 'header.js' wie' someFunc ('4274356') 'nach Abschluss des Ladevorgangs? Soweit ich weiß, können Sie nicht tun, was Sie fragen, denn sobald das Javascript downloadet es unter Ihrem aktuellen Dokument, das eine andere Querystring hat. – Stryner

+0

Mit $ .get (URL, Erfolg) fordern Sie an, eine JavaScript-Datei von Ihrem Server zu laden. Sie können keinen Parameter in Ihrem Skript übergeben. Wenn das Laden erfolgreich war, können Sie die Erfolgs-Callback-Funktion verwenden und einen beliebigen Parameter in Ihre header.js übergeben, die bereits geladen wurden. –

+0

Ja, es scheint, es in der Erfolgsfunktion aufrufen, scheint es zu erfordern, dass die header.js keine IIFE sein, nur versuchen, globale Variablen zu schützen –

Antwort

-1

Es scheint möglich. Laut jQuery's website ist die $ .getScript-Funktion "eine Kurzschrift-Ajax-Funktion, die äquivalent zu ..." ist (siehe den $ .ajax-Code unten). Sie müssen die $.ajax Funktion verwenden, um Daten an den Server zu übergeben. Durch das Hinzufügen der Datenattribut aus dem Ajax page zum $ .ajax Beispiel auf der getScript page, sollte es etwa so aussehen ...

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

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

von $ .get mit (url, Erfolg) Sie fordern ein laden JavaScript-Datei von Ihrem Server. Sie können keinen Parameter in Ihrem Skript übergeben.

Sie können so tun.

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. 
     });  
}); 


Edit:
Bei IIFE verwenden Sie eine globale Variable definieren können, bevor header.js Laden und Ihre Funktion ändern wie unten.

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

})(cityID); 
+0

wird dies mit header.js in einem IIFE gewickelt arbeiten? –

Verwandte Themen