Zugriff auf die Funktion in einer anderen .js-Datei mit $.getScript
Ich habe ein problem bezüglich Zugriff auf eine Funktion aus einer js-Datei zu einer anderen.
Ich habe versucht, mit jquery um dieses problem zu lösen, aber es scheint nicht zu funktionieren. Meine Konsole im browser meldet nur:
http://localhost:58763/orderPicking.js?_=1460542934750 404 (Nicht Gefunden).
XHR geladen: GET "http://localhost:58763/orderPicking.js?_=1460542934750".
Mein js sieht wie folgt aus. Das ist die eine, mit der Funktion, dass ich für den Zugriff von einem anderen .js-Datei
function HelloWorld() {
//print Hello World
alert("hello world!");
}
Den anderen .js-Datei(die, Die in der Lage sein sollten, um auf die Funktion zuzugreifen) wie folgt aussieht.
test();
function test() {
$.getScript('orderPicking.js', function () {
HelloWorld();
});
}
Habe ich dieses zu mein index.html
<script type="text/javascript" src="views/OrderPicking/orderPicking.js"</script>
<script type="text/javascript" src="views/OrderPicking/orderLines.js"></script>
Ich hoffe, Euch kann mir helfen das problem zu beheben.
- Sind Sie sicher, dass der Dateiname/die URL ist richtig? Vielleicht ist es in einem Unterordner etc? Die browser/server-reporting ist es nicht zu finden die Datei an diesem Ort.
- Ja, ich denke, Sie sind richtig, Sie sind beide im selben Ordner gespeichert, der Pfad sieht aus wie dieser "Blick/Kommissionierung/"Beide Dateien sind hier abgelegt"
- erstellen Sie ein Vereinfachtes Beispiel und legte es auf jsfiddle oder ähnliche. ich denke, Sie werden lösen Ihr eigenes problem dadurch in den Prozess.
- Ich habe gerade versucht den Pfad zu ändern, um diese Funktion test() { $.getScript('views/OrderPicking/orderPicking.js', function () { HelloWorld(); }); } Jetzt bin ich immer: Fehler: "Uncaught ReferenceError: "HelloWorld" ist nicht definiert", Zeile 13, Datei, 'localhost:58763/views/OrderPicking/orderLines.js'
- Vielen Dank für Ihre Antwort, aber jsfiddle ist begrenzt auf 1 js/html/css-Datei. Ich brauche zwei .js-Dateien.
- Die übergabe von Daten als parameter an die callback-Funktion von get-Skript und Konsole, melden Sie es aus. Das sollte das JavaScript der Datei. Auch ist orderLines, der hat die test () - in? Entfernen Sie Kommissionierung die Aufnahme in die index.html wenn Sie anrufen können es dynamisch
- Ich übergeben die Daten als parameter und als Sie erwähnt, dass ist meine orderPicking.js Datei. ordereLine ist das mit der test(), ja.
- Seltsam. Wären Sie in der Lage zu posten den gesamten Inhalt der Kommissionierung-Datei irgendwo??? Wenn HelloWorld ist noch nicht definiert, aber das Konsole-log-Konsolen aus dem code, dann vielleicht HelloWorld ist nicht in den richtigen Bereich?
- Ja, hier ist die komplette orderPicking.js Datei jsfiddle.net/v397c2mm
- Versuchen Sie anrufen
CommIT.orderPicking().HelloWorld()
statt - Dadurch bekomme ich folgende Fehlermeldung Fehler: "Uncaught TypeError: CommIT.Kommissionierung(...).HelloWorld ist nicht eine Funktion',
Du musst angemeldet sein, um einen Kommentar abzugeben.
Platzieren Sie diesen code in index.html:
Platzieren Sie diesen code in orderLines.js im gleichen Ordner:
Platzieren Sie diesen code in orderPicking.js im gleichen Ordner:
Verwenden Sie ein Befehlszeilen-Dienstprogramm auf einem server laufen (während im gleichen Ordner). NB: File-Protokoll nicht funktionieren, müssen Sie einen server für das:
Durchsuchen http://localhost:8080, und Sie sollten sehen Hallo Welt!.
Obige code ist in einem gist, geringfügig geändert, um eine on-page-Nachricht statt einer Warnung.
Den Kern-code läuft auf bl.ocks.org. Es ist eine Sandbox-Umgebung, die nicht zulässt, Warnung, Anrufe, also habe ich Sie zum hinzufügen einer h1-tag statt.
NB getScript URL-parameter ist relativ zum Stammverzeichnis der Website. Also in Ihrem Fall müssen Sie getScript('views/OrderPicking/orderPicking.js', ...) für diese zu arbeiten.
Stellen Sie sicher, dass Ihre jQuery-code ist passiert, nachdem das Dokument fertig ist (machen sicher es irgendeine Art von prüfen, einfach
$(document).ready(function () { //code });
würde genügen). Vorausgesetzt, es ist bereit, die folgende sollte gut funktionieren.Wenn Sie mit jQuery 1.5+, es ist am besten, um die
done
undfail
Rückrufe etwa so:CommIT.orderPicking().HelloWorld()
statt