外部调用时,js函数不起作用

时间:2014-07-08 18:27:10

标签: javascript php jquery

我知道这很傻但我觉得我最近几个小时都无法破解它。 我写信是为了理解这是如何工作的。 我有一个简单的js函数,我希望它保存在外部文件中,当我从.php文件调用它时它不起作用。

以下是设置: 我有4个独立的php文件,如register.php,dashboard.php,header.php,actions.php

我在我的script.js中定义了一些函数,如下面的

function fn1(){
alert("fn1");
} 

function fn2(){
alert("fn2");
}

function fn3(){
alert("fn3");
}

现在,我在header.php中定义了将此脚本文件包含为

<!doctype html>
<html>
<head>
 ...
</head>
<body>
 <script src='/js/script.js'></script>
</body>
...

我将此header.php包含在我的其他php文件中,如

<?php include('header.php'); ?>
<script language="javascript">
fn1();
</script>

这不起作用。它说..

SyntaxError:语法错误script.js:1

ReferenceError:fn1未定义dashboard.php

我设置并将它们分配到单独的文件中的方式有​​问题吗?

相同的功能,如果我在这些PHP文件中单独本地定义,它工作正常。 所以只有在从外部js脚本调用时才会出现问题。

请说明我做错了什么。

我之前写的一堆函数很好用,但我想首先理解这一点,以便我可以继续以相同的方式移动这些函数以保持它们的全局。

我想要实现什么?

我有基于视图/操作的PHP文件,如下所示。

login.php
   register.php
   dashboard.php
   useraction.php
   header.php

有几个div像我的导航栏,页脚,侧边栏,这些都是所有这些php的共同点; header.php具有所有必需的js函数,可根据各种条件和事件加载这些div;

我的计划是在我的所有php中包含header.php,以便在每个php文件中包含其中定义的所有函数,并且公共div是 由header.php本身加载。

有意义吗?这是实现这一目标的正确方法吗?如果没有,我该怎么办,请澄清。

所以按照这个计划,我试图制作一个简单的js函数,可以保存在外部js中,从这些不起作用的php中调用

2 个答案:

答案 0 :(得分:0)

language已弃用。您应该只使用<script>标记。 问题在于你的第一行,你应该发布,发布的代码工作正常,我只是测试它。这可能是一个语法错误。 不过,你应该考虑将脚本加载到一个不同的php文件中,而不是那个负责设置标题和导航栏或者你有什么的文件。

修改 对不起,我说可能是语法错误,当它显然只是:

SyntaxError: syntax error script.js:1

删除&#39; script.js&#39;的第一行。它应该工作。

这让它对我有用:

的header.php

<!doctype html>
<html>
<head>
</head>
<body>
<script src='script.js'></script>

main.php

<?php include('header.php'); ?>
<script>
fn1();
</script>

的script.js

function fn1(){
    alert("fn1");
} 
function fn2(){
    alert("fn2");
}
function fn3(){
    alert("fn3");
}

编辑2:

突然间,这似乎更像是一个php问题 您的脚本可能应该加载到一个单独的php文件scripts.php中,您将其包含在特定php页面的底部,但是在打开<script>标记之前,如果该页面上需要特定的js 。
这样可以加快页面加载速度。但是,您可以在标题部分中包含特定脚本,即使在文档的<head>中也是如此,但您应该尝试保持这些脚本的轻量级,这样他们就不会对用户造成太大的延迟。<登记/> 你可以在任何地方加入php。例如,这可能是dashboard.php:

<?php include('header.php'); ?>

<div id="ImOnlyOnThisParticularPage"></div>

<!-- Footer loads scripts after the <footer> or divs that it contains -->
<?php include('footer.php'); ?>

<script>
var iOnlyDoSomethingInThisPage = function()
{
   console.log("debug");
}
</script>
</body>
</html>

答案 1 :(得分:0)

@param LoL我复制了你的代码,并将其保存在单独的文件中,我按预期收到警报。如果你有问题打开你的控制台面板并尝试调试。按F12并检查控制台相关的错误,主要是你不要你的文件是正确的路径