2017-10-14 117 views
1

我下面的代码中,我有一个由三个字段和两个按钮组成的表单。在Review按钮中,我希望随机显示任何阿拉伯语单词,并让用户通过点击Show translation按钮来显示其英文翻译。将PHP参数传递给JavaScript函数时出现问题

<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()功能:

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

问题是按钮被点击时,执行任何操作(未示出在所有的消息) 。任何想法如何解决它?

+0

在控制台中是否有错误!? – M0ns1f

+0

你有'function myFun1(var)',但是调用'onClick =“myFun('。$ eng。')”'? – Sean

+0

@ M0ns1f没有错误。该消息根本没有显示。 –

回答

2

VAR首先改变参数一些其他参数名称为VAR在JavaScript中的关键字

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

其次,你必须通过在单或双引号的字符串值使用倒斜杠\并纠正函数名称从myFun()myFun1()

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

休息你的代码是完美的。

-1

< html>标签

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

为什么需要在''标记之前移动它?在输出html之前解析php,所以它没有区别 – Sean

+1

@Sean只是一个**标题检查**是**之前的任何输出**,之所以当你使用**标题位置**或**会议**你有一些错误**“...通过输出发送**”,这个检查**不是一个PHP解析**我没有看到任何**回声**在IF 。也是一个不好的实践... – 2017-10-14 20:35:22

+0

不幸的是,它没有工作 –

0

你的功能myFun1(VAR)定义此顶端添加,但你打电话myFun()。我猜这就是为什么点击按钮后什么也没有。

+0

我修好了,但问题仍然存在 –