php
  • javascript
  • 2011-04-20 108 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