2016-04-13 13 views
1

Ich bin in Bezug auf ein Problem mit einer Funktion von einer js-Datei in einem anderen zugreifen.

Ich habe versucht, mit jquery dieses Problem zu lösen, aber es scheint nicht zu funktionieren. Meine Konsole im Browser nur protokolliert:

http://localhost:58763/orderPicking.js?_=1460542934750 404 (Not Found).

XHR fertig geladen: GET "http://localhost:58763/orderPicking.js?_=1460542934750".

Meine js sieht wie folgt aus. Dies ist die eine mit der Funktion, die ich von einem anderen Js zugreifen möchten Datei

function HelloWorld() { 
    //print Hello World 
    alert("hello world!"); 
} 

Die andere JS-Datei (Derjenige, der Lage sein sollte, die Funktion zuzugreifen) sieht wie folgt aus.

test(); 

function test() { 
    $.getScript('orderPicking.js', function() { 
     HelloWorld(); 
    }); 
} 

Ich habe hinzugefügt, diese zu meinem index.html

<script type="text/javascript" src="views/OrderPicking/orderPicking.js"</script> 
<script type="text/javascript" src="views/OrderPicking/orderLines.js"></script> 

Ich hoffe, ihr mir das Problem der Fehlersuche helfen können.

+0

Sind Sie sicher, dass der Dateiname/Speicherort korrekt ist? Vielleicht ist es in einem Unterordner usw.? Der Browser/Server meldet, dass er die Datei an diesem Ort nicht finden kann. –

+0

Ja ich denke, dass sie korrekt sind, sie sind beide im selben Ordner platziert, der Pfad sieht wie folgt aus: "views/OrderPicking /" Beide Dateien werden hier platziert " –

+0

ein vereinfachtes Beispiel erstellen und auf jsfiddle oder ähnliches aufstellen. Ich denke Sie werden Ihr eigenes Problem lösen, indem Sie dies tun – datashaman

Antwort

1

Platzieren Sie diesen Code in index.html:

<!DOCTYPE html> 
<html lang="en"> 
<head> 
    <meta charset="UTF-8"> 
    <title>getScript example</title> 
</head> 
<body> 
    <div id="panel"></div> 

    <script src="http://code.jquery.com/jquery-2.2.3.min.js"></script> 
    <script src="orderLines.js"></script> 
</body> 
</html> 

Platzieren Sie diesen Code in orderLines.js im selben Ordner:

$(function() { 
    $.getScript('orderPicking.js', function() { 
    HelloWorld(); 
    }) 
}) 

Platzieren Sie diesen Code in orderPicking.js im selben Ordner:

function HelloWorld() { 
    $('#panel').html('<h1>hello world!</h1>'); 
} 

Verwenden Sie eine Befehlszeilenprogramm einen Server (während in demselben Ordner) laufen. NB: File-Protokoll wird nicht funktionieren, können Sie einen Server für diese verwenden müssen:

php -S localhost:8080 

Durchsuchen, um http://localhost:8080, und Sie sollten Hallo Welt sehen!.

Above-Code ist in a gist, leicht verändert eine On-Page-Nachricht zu zeigen, statt eine Benachrichtigung.

Der Kern Code running on bl.ocks.org. Es ist eine Sandbox-Umgebung, die keine Alert-Aufrufe erlaubt, also habe ich sie geändert, um stattdessen ein h1-Tag hinzuzufügen.

Hinweis GetScript-URL-Parameter ist relativ zum Stammverzeichnis der Site. In Ihrem Fall müssen Sie also getScript ('views/OrderPicking/orderPicking.js', ...) verwenden, damit dies funktioniert.

+0

Danke für Ihre Antwort, aber wie kann ich die Funktion aus einer anderen .js-Datei aufrufen? –

+0

Bearbeitet, um die Funktion aus einer anderen Datei aufzurufen. So wie das? – datashaman

+0

Vielen Dank für Ihre Antwort. Wenn ich versuche, dass ich einen 404-Fehler bekomme, scheint es, dass es nicht in der Lage ist, orderPicking.js zu finden. –

3

The path will be relative to the page it's loaded from (not the path of your init script) since that's the url the browser will be at when it executes the ajax request.

Stellen Sie sicher, Ihr Code jQuery geschieht, nachdem das Dokument bereit ist (stellen Sie sicher, für das eine Art von Kontrolle gibt es, einfach $(document).ready(function() { // code }); würde genügen). Vorausgesetzt, es ist fertig, sollte das unten gut funktionieren.

function test() { 
    $.getScript('views/OrderPicking/orderPicking.js', function (data) { 
     console.log(data); // should be the js file contents 
     HelloWorld(); // should alert 
    }); 
} 

Wenn Sie 1.5+ jQuery verwenden, ist es am besten, die done und fail Rückrufe zu verwenden wie so:

$.getScript('views/OrderPicking/orderPicking.js') 
    .done(function (script) { 
     HelloWorld(); 
    }) 
    .fail(function (jqxhr, settings, exception) { 
     console.log('something went wrong!'); 
    }); 
+0

Danke für Ihre Antwort Ich bekomme: Fehler:' Uncaught ReferenceError: HelloWorld ist nicht definiert '. Ich habe beide Wege ausprobiert. –

+0

Versuchen Sie, 'CommIT.orderPicking(). HelloWorld()' statt – Shakespeare

Verwandte Themen