从PHP输出调用JavaScript函数

时间:2014-03-03 14:14:29

标签: javascript php

我正在尝试从PHP输出中调用JavaScript函数。

问题是该功能不会触发。

这是我的代码:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
    <head>
        <link rel="stylesheet" type="text/css" href="styles.css" />
        <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
        <script src="build_workout_functions.js" charset="UTF-8"></script>
    </head>
<?php

  if ( isset( $_GET[id] ) ) {

  echo '<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>

    <script src="build_workout_functions.js" charset="UTF-8">
        getUserProgram('.$_GET[id].');
    </script>';
  }

?>
    <body id="login-bg"> 

        <div class="workout_table">

            <select name="days">
                <option value="A">A</option>
                <option value="B">B</option>
                <option value="C">C</option>
                <option value="D">D</option>
                <option value="E">E</option>
                <option value="F">F</option>
            </select>

            <select name="muscles" onchange="getExercies()">
                <option value="legs">legs</option>
                <option value="back">back</option>
            </select>

            <select name="exericse"><select>

        </div>

    </body>
</html>

JavaScript代码:

function getUserProgram ( userId ) {

    alert(userId);

    $.ajax({
        type: "POST",
        url: "get_user_program.php",
        data: {id: userId}
    })
    .done(function( msg ) {
        alert( "Data Saved: " + msg );
    });

}

2 个答案:

答案 0 :(得分:4)

一些事情:

  • 脚本标记应位于<head><body>(您的不是)
  • 你已经加载了jQuery和build_workout_functions.js。您的PHP输出不需要重新加载它们。
  • 您不应将内容放入<script>属性为src的广告代码中。

在此处考虑the documentation

  

如果 属于src属性,则该元素必须为空或仅包含与script documentation匹配的script content restrictions

这意味着您在使用src属性时应该只提供JavaScript注释内容。我们在w3c网站上为我们提供了一个例子:

<script src="cool-effects.js">
 // create new instances using:
 //    var e = new Effect();
 // start the effect using .play, stop using .stop:
 //    e.play();
 //    e.stop();
</script>

答案 1 :(得分:0)

只要写成html格式,如果满足if条件,那么你的脚本将被编写并执行,否则不会。

注意:我假设您在前两行<script>作为试用而写,并且您也将getUserProgram()称为试用。

<?php

if(isset($_GET[id]))
{
?>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>

<script src="build_workout_functions.js" charset="UTF-8">
    getUserProgram('<?php echo $_GET[id]; ?>');
</script>

<?php
}

?>

我也在函数调用中回显$_GET[id]并且我原样$_GET[id],顺便说一下它可能是错误的。