php
  • javascript
  • 2011-04-20 105 views 3 likes 
    3

    基本上我试图从我的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:

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

    记住你不是真的从PHP调用它 - 你正在生成的HTML文件的一部分,而不是调用你的JS函数。你能链接到最终的输出文件,还是在你的问题中提供它?你通过PHP编写脚本标签的事实在很大程度上是不相关的。 – Erik 2011-04-20 21:32:32

    +0

    当您在纯HTML中调用它时,js函数是否工作? – superbly 2011-04-20 21:34:06

    +1

    代码的顺序在这里很重要,后者必须在生成的html文档的第一个代码块中调用**之前声明javascript函数。您的示例的顺序可以这么说,不正确;) – 2011-04-20 21:34:44

    回答

    2

    通过呼应<script>...</script>用PHP,你是不会得到浏览器运行JS的功能!

    PHP只输出您想要发送到浏览器的HTML文件。浏览器然后解析这个HTML并且在页面显示给用户之前执行许多事情。

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

    所以,如果有一些JS想在特定时间运行,比如在浏览器加载完页面后立即说明,那么需要在HTML文件中创建JS,以便有一个JS函数可以获取所谓在这样的页面加载事件:

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

    这是更好地使用jQuery或其他一些JS frmework来完成这样的事情虽然。

    +0

    为什么它*更好*为onload事件使用框架? – 2011-04-20 21:42:08

    +0

    '

    2

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

    此外,虽然这不是真的要在这里,有一个JavaScript脚本标记的正确方法是。

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

    即不language="javascript"

    0

    更换调用JS函数的行:

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

    应该解决的问题。因为在你调用user_error()时,该函数可能没有被浏览器初始化。所以你会得到一个错误,因为无法找到函数。

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

    +0

    如果你看看我更新的帖子,我改变了我的方法来使用该jquery,但仍然没有运气:S – buymypies 2011-04-21 11:25:19

    +0

    这不工作:( – buymypies 2011-04-21 11:30:15