【问题标题】:Javascript is executing on reloadJavascript 在重新加载时执行
【发布时间】:2016-02-16 11:08:09
【问题描述】:

我正在使用一个 php 文件来创建一个允许我管理 mysql 条目的页面。该页面从数据库中获取条目并列出我工作正常的条目。我正在尝试添加一个按钮,允许我“接受”一个将其状态值从 0 更改为 1 的条目。

它工作正常,除了当我刷新页面时,它会自动执行应该是 onclick 事件的 javascript 函数。我是否错过了一些非常简单的东西或其他东西。我已经看这个 2 天了,已经重写了好几次,但都没有成功,也没有通过广泛的谷歌搜索找到答案。

我的按钮:

<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,但它也不起作用

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

【问题讨论】:

  • 使用 AJAX 我终于让它工作并在单击按钮时更新!

标签: javascript php jquery html mysql


【解决方案1】:

每次请求页面时,您的 PHP 都会在服务器上执行。 PHP 位于 Javascript 函数内部这一事实并不重要。

PHP 服务器解析文件,找到其中的任何 PHP,在服务器上运行 PHP,然后将结果发送到浏览器。

如果您只想在浏览器中执行 Javascript 函数时执行一些 PHP,那么您必须从 Javascript 向您的服务器进行 Ajax 调用,并让 Ajax 调用请求一个 PHP 页面,然后该页面可以运行所需的PHP 并将结果(如有必要)返回给浏览器的 Javascript。

请记住,在您的设置中,PHP 在服务器上执行,然后将生成的页面(其中没有任何 PHP)发送到浏览器。然后,浏览器在事件发生时在网页中执行适当的 Javascript。此时在服务器上执行代码的唯一方法是对服务器进行 Ajax 调用。

【讨论】:

  • 噢噢,说得有道理。我不会想到的。谢谢你。我只需要一个关于下一步去哪里的方向,因为我把头发拉出来绕圈子。我想这很简单。谢谢!
【解决方案2】:

您混淆了客户端和服务器端。看看这个:

function javascriptFunction()
{
   <?php echo date("Y");  ?>
   return true;
}

上面的代码块在 PHP 中执行。如何?上述代码的每一行都被视为一个字符序列,并被发送到cout(标准输出)。 &lt;?php...?&gt; 中的小 sn-p 由 PHP 执行,如果有任何输出,它也会发送到标准输出。只有当字符从服务器发送到客户端(浏览器)时,浏览器才开始解释它们。这导致&lt;script type='text/javascript'&gt;..&lt;/script&gt; 中的代码被解释为 JS sn-p。现在,请记住:每个 PHP 代码都在 JS、CSS 或 HTML 之前执行。 PHP 将一切视为字符串、整数/双精度或布尔值(等)。

你应该怎么做?

了解什么是 AJAX,并尝试了解其最佳实践。你会惊叹于它的卓越。

【讨论】:

  • 感谢您的回复。我现在正在研究 AJAX :)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-08-21
  • 2016-08-18
  • 1970-01-01
  • 2021-11-19
  • 1970-01-01
  • 1970-01-01
  • 2012-08-03
相关资源
最近更新 更多