将PHP参数传递给JavaScript函数时出现问题

将PHP参数传递给JavaScript函数时出现问题,javascript,php,Javascript,Php,在下面的代码中,我有一个由三个字段和两个按钮组成的表单。在Review按钮中,我想随机显示阿拉伯语中的任何单词,并让用户通过勾选show translation按钮以英语显示其翻译 <html> <body> <script> function myFun1(var) { document.getElementById("demo").innerHTML = "The translation in English is " + va

在下面的代码中,我有一个由三个字段和两个按钮组成的表单。在Review按钮中,我想随机显示阿拉伯语中的任何单词,并让用户通过勾选
show translation
按钮以英语显示其翻译

<html>
<body>

<script>
    function myFun1(var) {
        document.getElementById("demo").innerHTML = "The translation in English is  " + var;
    }        
</script>

<?php
    if ($_SERVER["REQUEST_METHOD"] == "POST") {
        $english = $_POST["english"];
        $arabic = $_POST["arabic"];
        $example = $_POST["example"];
    }
?>

<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
    <textarea name="english" rows="4" cols="70" placeholder="English">English</textarea>
    <br>
    <textarea name="arabic" rows="4" cols="70" placeholder="Arabic">Arabic</textarea>
    <br>
    <textarea name="example" rows="4" cols="70" placeholder="Example">Example</textarea>

    <br><br>

    <input type="submit" name="add" value="Add new">
    <input type="submit" name="review" value="Review">

    <br>

    <p id="demo"></p>
</form>

<?php

$servername = "localhost";
$username = "xxx";
$password = "yyy";
$dbname = "vdb";

// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
}

if (isset($_POST['add'])) {
    $sql = "INSERT INTO Vocabulary (English, Arabic, Example)
    VALUES ('$english', '$arabic', '$example')";

    if ($conn->query($sql) === TRUE) {
        echo "New record created successfully";
    } else {
        echo "Error: " . $sql . "<br>" . $conn->error;
    }
}
elseif (isset($_POST['review'])) {
    $sql = "SELECT COUNT(ID) as total FROM Vocabulary";
    $result = $conn->query($sql);
    $row = $result->fetch_assoc();
    #echo $row['total'];

    $generated = rand(1,$row['total']);

    $sql1 = "SELECT * FROM Vocabulary where ID = $generated";
    $result1 = $conn->query($sql1);
    $row1 = $result1->fetch_assoc();

    echo "<br>";
    echo $row1['Arabic'];

    echo "<br><br>";

    $eng = $row1['English'];

    echo '<button onClick = "myFun('.$eng.')">Show translation</button>';

}

$conn->close();
?>

</body>
</html>

问题是,当单击按钮时,什么也没有发生(消息根本没有显示)。有没有办法解决这个问题?

在开始之前将这个添加到顶部

标记



您有函数myFun1(var)的定义,但您正在调用myFun()。我想这就是为什么单击按钮后什么都没有的问题。

首先将参数var更改为另一个参数名称,因为var是javascript中的关键字

 <script type="text/javascript">
        function myFun(as) {
            document.getElementById("demo").innerHTML = "The translation in English is  " + as;
        }        
 </script>

Rest您的代码是完美的。

console中是否有错误!?您有
函数myFun1(var)
但是调用
onClick=“myFun('.$eng.)”
?@M0ns1f没有错误。该消息根本没有显示。能否显示$eng输出的示例
var
是javascript中的保留字。将参数命名为其他名称为什么需要将其移动到
标记之前?php是在html输出之前解析的,因此不会产生错误difference@Sean只是在任何输出之前进行了一次头检查,这就是为什么在使用头位置或会话时会出现一些错误“…通过输出发送”,并且该检查不是php解析,我在IF中没有看到任何回音。函数myFun1(将此参数名称更改为保留名称)为@charlietfl,只需告诉您使用保留名称是100%的错误。我已修复了它,但问题仍然存在
<?php
if ($_SERVER["REQUEST_METHOD"] == "POST") {
    $english = $_POST["english"];
    $arabic = $_POST["arabic"];
    $example = $_POST["example"];
}
?>
 <script type="text/javascript">
        function myFun(as) {
            document.getElementById("demo").innerHTML = "The translation in English is  " + as;
        }        
 </script>
echo '<button onClick = "myFun1(\''.$eng.'\')">Show translation</button>';