我正在使用php文件创建一个允许我管理mysql条目的页面。该页面从数据库中获取条目并列出我工作正常的条目。我想添加一个按钮,让我能够接受"一个条目,将其状态值从0更改为1.
它工作正常,除非我刷新页面时,它会自动执行javascript函数,该函数应该是onclick事件。我错过了一些非常简单的东西。我现在已经看了两天,并且已经多次重写,但没有成功,也没有广泛的谷歌搜索来找到答案。
我的按钮:
<input type='submit' name='acceptbut' id='acceptbut' value='Accept'></input>
我认为这个问题与location.reload或其他东西有关。
<script type="text/javascript">
function setAccept() {
<?php
$query = "UPDATE regiments SET status=1 WHERE memberID=$mid";
mysqli_query($connect, $query);
?>
location.reload(true);
}
document.getElementById('acceptbut').onclick = setAccept;
</script>
我也试过搞乱内联onclick但它无法正常工作
我的困惑是,如果我实际上没有调用它,函数为什么会运行。
答案 0 :(得分:2)
每次请求页面时,您的PHP都会在服务器上执行。 PHP位于Javascript函数内部这一事实并不重要。
PHP服务器解析文件,找到其中的任何PHP,在服务器上运行PHP,然后将结果发送到浏览器。
如果你只想在浏览器中执行Javascript函数时执行某些PHP,那么你必须从Javascript到你的服务器进行Ajax调用,并让Ajax调用请求一个PHP页面,然后可以运行所需的PHP并将结果(如有必要)返回给浏览器的Javascript。
请记住,在您的设置中,PHP在服务器上执行,然后生成的页面(其中没有任何PHP)被发送到浏览器。然后,当事件发生时,浏览器在网页中执行适当的Javascript。此时在服务器上执行代码的唯一方法是对服务器进行Ajax调用。
答案 1 :(得分:0)
您在混淆客户端和服务器端。看看这个:
function javascriptFunction()
{
<?php echo date("Y"); ?>
return true;
}
上面的代码块在PHP中执行。怎么样?上述代码的每一行都被视为一系列字符,并被发送到cout
(标准输出)。 <?php...?>
中的小片段由PHP执行,如果有任何输出,它也会被发送到标准输出。只有当字符从服务器发送到客户端(浏览器)时,浏览器才会开始解释它们。这导致<script type='text/javascript'>..</script>
内的代码被解释为JS片段。现在,请记住:每个PHP代码都可以在JS,CSS或HTML之前执行。 PHP将所有内容都视为字符串,整数/双精度或布尔值(等)。
你应该做什么?
了解什么是AJAX,并尝试学习其最佳实践。你会惊叹于它的卓越。