问题从PHP调用JavaScript函数

时间:2011-04-20 21:29:39

标签: php javascript

基本上我试图从我的PHP调用一个javascript函数,我正在使用我知道在其他情况下工作的代码但是这里不是,我不知道为什么?

这可能是愚蠢的,因为我长时间盯着这个屏幕:)

这是我调用函数的地方:

if(isset($test_details['done_test'])){
    echo "getting here";
    echo "<SCRIPT LANGUAGE='javascript'>user_error();</SCRIPT>";
}

我成功地“在这里”打印但是它没有调用JS函数。

javascript函数:

   function user_error(){
   document.write("working");
        //alert("User has already taken this test. Your are being redirected...");
        //setTimeout("window.location='home_student.php'",3000);
   }

评论我最终希望它做什么。

有人可以说清楚。

非常感谢,

@Crimson - 这是我在你的建议后尝试的.​​.....仍然没有运气。

javascript now:

$(document).ready(function () {
     var done = "<?= $test_details['done_test'] ?>";
     if(typeof done != 'undefined'){
          $('WORKING').appendTo('#bodyArea'); // just to test
     }
});

3 个答案:

答案 0 :(得分:2)

通过PHP回显<script>...</script>,你不会让浏览器运行JS函数!

PHP仅输出您要发送到浏览器的HTML文件。然后,浏览器会解析此HTML,并在向用户显示页面之前执行大量操作。

接下来,用户与显示的页面(或其他与浏览器相关的事件,如'onload')进行交互,并调用附加的JS。

所以,如果你想在某个时间运行一些JS,比如在浏览器加载页面后立即说,你需要在HTML文件中创建JS,这样就会有一个被调用的JS函数在页面加载事件,如下所示:

<body onload="/*do something here*/"> ... </body>

最好使用JQuery或其他一些JS frmework来完成这样的事情。

答案 1 :(得分:2)

您确定该功能已定义吗?也许你在进行函数调用后声明了你的函数。

此外,虽然这里并不重要,但有一个javascript脚本标记的正确方法是。

<script type="text/javascript"></script>

即。不是language="javascript"

答案 2 :(得分:0)

用你的名字替换你调用JS函数的行:

echo '<script type="text/javascript">window.onload = user_error </script>' ; 

它应该解决问题。因为在您调用user_error()时,该功能可能尚未被浏览器初始化。因此,您将收到错误,因为无法找到该功能。

如果函数放在外部.js文件中,很可能会出现此错误,因为外部文件通常需要一段时间才能加载。如果函数减速在同一个文件中,但在你调用它之后,同样的事情就会发生。