使用$ .getScript访问另一个.js文件中的函数

时间:2016-04-13 10:26:14

标签: javascript jquery

我遇到了从一个js文件访问另一个js文件的问题。

我尝试过使用jquery来解决这个问题,但似乎没有用。我在浏览器中的控制台只记录:

  

http://localhost:58763/orderPicking.js?_=1460542934750 404(未找到)。

XHR完成加载:GET“http://localhost:58763/orderPicking.js?_=1460542934750”。

我的js看起来像这样。这是我想从另一个.js文件访问的函数

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

另一个.js文件(应该能够访问该函数的文件)看起来像这样。

    test();

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

我已将此添加到我的index.html

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

我希望你们能帮我解决问题。

2 个答案:

答案 0 :(得分:3)

  

路径将相对于它所加载的页面(不是路径   您的初始化脚本),因为这是浏览器在何时使用的URL   它执行ajax请求。

确保您的jQuery代码在文档准备好后发生(请确保对此进行某种检查,只需$(document).ready(function () { // code });就足够了)。假设已经准备就绪,下面应该可以正常工作。

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

如果您使用的是jQuery 1.5+,最好使用donefail回调,如下所示:

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

答案 1 :(得分:1)

将此代码放在 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>

将此代码放在同一文件夹中的 orderLines.js 中:

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

将此代码放在同一文件夹中的 orderPicking.js 中:

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

使用命令行实用程序运行服务器(在同一文件夹中)。 NB :文件协议不起作用,您必须使用服务器:

php -S localhost:8080

浏览到http://localhost:8080,您应该看到 hello world!

以上代码为in a gist,略有改动,以显示页面消息而不是提醒。

要点代码running on bl.ocks.org。它是一个不允许警报调用的沙盒环境,因此我将其更改为添加h1标记。

NB getScript网址参数相对于网站的根目录。因此,在您的情况下,您必须使用 getScript(&#39; views / OrderPicking / orderPicking.js&#39;,...)才能实现此目的。