【问题标题】:Problem calling a js function from php从php调用js函数的问题
【发布时间】:2009-07-09 15:57:02
【问题描述】:

我正在使用我的 php 调用这样的 js 函数:

<?php 
$chk=1;
if($chk==1)
{
    echo '<script>testing();</script>';
}
?>

我的 js 看起来像:

function testing()
{
   document.getElementById("mainbody").innerHTML="This is my first JavaScript!";
}

这个js是一个外部的js文件。

我的 html 看起来像:

<html>
<head>
<script src="qotw.js"></script>
</head> 
    <body>
    <div id="mainbody"></div>     
    </body>
</html>

但这不起作用。我在这里做错了什么? 如果你知道,请告诉我。

最好的 泽山

【问题讨论】:

  • 包含 html 作为脚本的输出 - 我怀疑你只是缺少一些东西。
  • @Paul,你为什么要添加 SCRIPT 标签?你确定他会利用它们吗?
  • 看起来有些重叠的编辑
  • 保罗,你是对的。原文有 SCRIPT 标签,我必须点击“查看源代码”才能看到它们。
  • 脚本没有被调用。我试过 echo '';并没有发出警报。

标签: php javascript


【解决方案1】:

您在目标 div 存在之前运行脚本,因此 document.getElementById 调用返回 false 值而不是 HTMLElementNode。

您要么需要将script 元素移动到div 之后,要么将函数分配给事件处理程序(例如onload)而不是直接调用它。

这与使用PHP无关。

顺便说一句,您的 HTML 是 invalid 并触发 quirks mode

【讨论】:

  • 不,那没有发生。 div id=mainbody 里面有一个按钮,onclick=调用 js 并从该 js 调用进一步的 php。
  • 不能从 JS 调用 PHP。 PHP 在服务器上运行,生成一个文档(包含 JS),将其交付给客户端,然后客户端运行 JS。此时再运行 PHP 为时已晚 - 必须向服务器发出新的 HTTP 请求。您似乎将您的测试用例缩减得太远,并删除了一些查看所有错误所需的信息。
【解决方案2】:

尝试按顺序测试以下内容:
首先:正在调用您的脚本

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

second: 函数被调用

function testing() {
    alert('inside testing');
}

第三个:如上所述,

if (document.getElementById("mainbody") == null) alert('yep, its null');

然后告诉我们结果

【讨论】:

  • 脚本没有被调用。我试过 echo '';并没有发出警报。
【解决方案3】:

确保代码中的“主体”上方没有调用“测试”,因为这样代码将在加载期间的某个点运行,此时对象不存在。

【讨论】:

    猜你喜欢
    • 2010-09-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多