3

我是 PHP 新手,对任何类型的服务器管理都非常非常陌生。我从 XAMPP 3.1.0 for Windows 运行并使用 PHP 5.4 版。

我的 PHP 脚本执行得很好,但无论出于何种原因,我似乎都无法像这样包含外部 js 文件:

<script type="text/javascript" src="core.js"></script>

但是,我可以毫无问题地做到这一点。

<script type="text/javascript">
    alert("some alert");
</script>

有谁知道发生了什么事?

[编辑:这是我的文件夹结构。我的文件的路径是:C:\xampp\htdocs\AllocatedSpendingPlan\ - 它们都位于根目录。]

文件夹结构

这是我的文件:

[编辑:我使用 src 属性从脚本标记的主体中删除了代码,但它仍然无法正常工作。]

<!DOCTYPE html>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title></title>
        <script type="text/javascript" src="core.js"></script>
        <script type="text/javascript">
            alert("working");
        </script>
    </head>
    <body>
        There is stuff here.
    </body>
</html>

当我查看 Firefox 中的“网络”选项卡时,我显示该文件已下载,但没有任何脚本正在执行,并且在我进行调试时未加载该文件本身。

这是脚本调试器,显示没有加载文件:

Firefox 的脚本调试器,不显示加载的脚本

最后,这是我的 Net 选项卡,显示文件已下载:

Firefox 的网络选项卡,显示文件已找到并已下载

[编辑:固定。这是我的命名空间声明中的一个错误。当我的 var 应该是一个对象文字时,我将它声明为一个函数。]

这是正确的代码。其他一切都很好。

var Core = {
    namespace: function(ns){
        var parts = ns.split("."),
        object = this,
        i, len;
        for (i=0, len=parts.length; i < len; i++) {
            if (!object[parts[i]]) {
                object[parts[i]] = {};
            }
            object = object[parts[i]];
        }
        return object;
    }
};

Core.namespace("Budgeting.Tools.AllocatedSpending");

Core.Budgeting.Tools.AllocatedSpending = function(){
    return {
        greet: function(){
            alert("hello");
        }
    };
};

var d = new Core.Budgeting.Tools.AllocatedSpending();
d.greet();
4

3 回答 3

1

看到你的截图后,

  1. 当你使用一个src=""属性时,你应该将<script>标签的主体留空。所以alert("I am here, aren't you!")从那里删除它。
  2. core.js在路径中找不到您的。让我们知道文件夹路径。
于 2012-12-01T03:29:53.753 回答
0
  • 检查您的控制台是否有错误(对于 Chrome/Windows,CTRL+SHIFT+I)。
  • 这可能是 404 错误或您的core.js文件中的错误。确保路径正确:<script type="text/javascript" src="/path/to/core.js"></script>

  • 该脚本可能被包含得太早/太晚。要对此进行测试,请确保该<script>块位于<head>

于 2012-12-01T03:11:41.777 回答
0

这是一个简单的编码错误。我将命名空间声明为函数而不是对象文字。代码应该是:

var Core = {
    namespace: function(ns){
        var parts = ns.split("."),
        object = this,
        i, len;
        for (i=0, len=parts.length; i < len; i++) {
            if (!object[parts[i]]) {
                object[parts[i]] = {};
            }
            object = object[parts[i]];
        }
        return object;
    }
};

代替:

var Core = function () {
    namespace: function(ns){
        var parts = ns.split("."),
        object = this,
        i, len;
        for (i=0, len=parts.length; i < len; i++) {
            if (!object[parts[i]]) {
                object[parts[i]] = {};
            }
            object = object[parts[i]];
        }
        return object;
    }
};

只见树木不见森林……

于 2012-12-01T03:59:21.697 回答