Javascript正在重新加载时执行

时间:2015-11-15 06:07:02

标签: javascript php jquery html mysql

我正在使用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但它无法正常工作

我的困惑是,如果我实际上没有调用它,函数为什么会运行。

2 个答案:

答案 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,并尝试学习其最佳实践。你会惊叹于它的卓越。