【问题标题】:file_get_contents() lag after form input表单输入后的 file_get_contents() 滞后
【发布时间】:2022-01-28 19:22:04
【问题描述】:

我正在尝试更新值。每当我输入值时,它都会显示旧值。但是当我刷新时,它会更新为新值。

附:该值始终是一个数字。如果有更好的解决方案可以在不使用数据库的情况下存储数字,我不介意。

程序逻辑:按下设置按钮,用值更新txt文件。

实现:应该刷新表单提交的值。

index.php

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title></title>
    </head>
    <body>

        <form method="post" action="">
            <input type="number" class=""  name="data" id="data" min="0" max="200" value="<?php echo file_get_contents('test.txt');?>">
            lb
            <input type="submit" name="button1" onclick="data_update();" value="Set">
        </form>
        <br>
        <?php
            echo("The current value of the data is ");
            
            echo file_get_contents('test.txt');

        ?>

    <script language="javascript" type="text/javascript">
    function data_update(){
        <?php file_put_contents('test.txt', $_POST["data"]);?>
    }
    </script>
    </body>
</html>

这是我的 test.txt 文件数据:

20

【问题讨论】:

  • 您能否引用您隐含声明的来源,即您可以将 PHP 散布到 JavaScript 函数中并期望它在该上下文中执行? PHP是服务器端的; JavaScript 是客户端的——它们是两个完全不同的东西。 &lt;script&gt;&lt;/script&gt; 块中的代码没有按照您认为的方式运行。

标签: javascript php html


【解决方案1】:

不幸的是,PHP 和 JavaScript 不会像这样混合在一起。您无法使用 JavaScript 从逻辑上控制 PHP 代码的执行,因为 PHP 是在服务器上执行的,而 JavaScript 是在客户端上执行的。

但是,在这种情况下,对 JavaScript 的需求为零 - 只需检查脚本顶部是否存在预期的 POST 参数并采取相应措施:

<?php
    if (isset($_POST['data'])) file_put_contents('test.txt', $_POST['data']);
?>
<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title></title>
    </head>
    <body>

        <form method="post">
            <input type="number" class=""  name="data" id="data" min="0" max="200" value="<?php echo file_get_contents('test.txt');?>">
            lb
            <input type="submit" name="button1" value="Set">
        </form>
        <br>
        <?php
            echo("The current value of the data is ");
            echo file_get_contents('test.txt');
        ?>
    </body>
</html>

我还整理了一个Repl.it,说明这可以按您的意图工作。

【讨论】:

  • 谢谢。这样可行!我之所以尝试这样做是因为如果我刷新页面,则会弹出一个表单重新提交。虽然,我可以将代码放入另一个文件并使用标头函数调用它,但我只是想避免这种情况。
猜你喜欢
  • 1970-01-01
  • 2013-11-06
  • 1970-01-01
  • 2013-06-12
  • 1970-01-01
  • 2021-09-07
  • 1970-01-01
  • 2014-02-26
  • 1970-01-01
相关资源
最近更新 更多