所以主要问题是,当我在 post[] 或其他内容之后进行一些查询并且它只是在 php 的主代码中(而不是在函数中)时,它工作得很好。 但是,当我尝试在 php 函数中使用该查询时,它永远不会工作,并且有点隐藏页面其余部分上的任何其他代码...在 php 和 sql 查询代码之后我有一些 div,它们只是不这样做当我尝试通过该函数查询时显示..
<script type="text/javascript">
function callPhpVoteAdd(name) {
var result = <?php voteAdd(name); ?>;
alert(result);
return false;
}
</script>
<?php
echo '</br>';
$allsql = "SELECT * FROM voting ORDER BY votes DESC";
$result = mysqli_query($conn, $allsql);
if (mysqli_num_rows($result) > 0) {
// output data of each row
while($row = mysqli_fetch_assoc($result)) {
$name = $row["name"];
$votes = $row["votes"];
echo '<form method="post">
name: "' .$name. '" - votes: "' .$votes. '" <input type="submit" name="'.$name.'" value="'.$name.'" onclick="callPhpVoteAdd(this.name)"/><br>
</form>';
}
}
function voteAdd($name) {
if($conn->query("UPDATE voting SET votes = votes + 1 WHERE name = '".$name."' ") === TRUE) {
echo "<script>alert('fuck yeah');</script>";
}
echo "shit";
}
所以按下的按钮会调用js函数,js函数会调用php函数
最佳答案
我猜你误解了 JS 和 PHP 的工作方式。 PHP 在服务器端工作,而 JS(在您的情况下)在客户端工作。因此,PHP 在发送到浏览器之前生成脚本/页面,因此当 JS 运行它时,所有 <?php ?>
已经被静态数据取代。
所以,简而言之,在页面加载后,您无法像您尝试的那样从 JS 调用 PHP 函数(因为该调用不再存在 - 检查您的源代码)浏览器)。
您需要:
- 使用带有“action”属性的表单;这会将数据发送到服务器,并调用“action”中设置的php脚本,您可以在其中处理发送的数据,然后使用新的/更新的数据重新加载页面,
- 使用ajax(几乎相同的事情:这将数据发送到服务器并调用PHP脚本来处理它们,但不是重新加载页面,PHP脚本的输出 - 以及您需要的数据 - 将被发送回JS,回调函数,您可以使用它们来修改页面)。
关于javascript - 在 php 函数内部时,Sql 查询不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46808030/