1

我是网页开发的新手,这似乎是一个基本问题,但我不知道如何解决。

通过一个按钮,我需要更改 php 中变量的值,特别是每次按下按钮时,变量的值都必须增加。

代码如下:

     <!DOCTYPE html>
     <html lang="en">
     <head>
        <meta charset="utf-8">
        <title>Test</title>
     </head>
     <body>
        <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.5/jquery.min.js"></script>
        <script>
             function echoVal()
             {
                 alert("<?php val(); ?>");
             }
        </script>

        <?php
             function val() {
                static $a = 0;
                $a++;
                echo $a;
             } 
        ?>

        <button onclick="echoVal()"> Increase </button>
     </body>
     </html>

主要问题是变量 $a 的值始终为 1,按下按钮时不会增加其值。我已经保存了扩展名为 .php 的文件(我不确定这是否会有所不同,但我只是提到它)。

有什么建议可以解决这个问题吗?

提前感谢您的任何建议。

编辑代码:

     <!DOCTYPE html>
     <html lang="en">
     <head>
        <meta charset="utf-8">
        <title>Test</title>
     </head>
     <body>
        <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.5/jquery.min.js"></script>
        <script>
             function echoVal()
             {
                 alert("<?php val(); ?>");
             }
        </script>

        <?php
             function val() {
                static $a = 0;
                $a++;
                $filename ='infoX.txt';
                if (is_writable($filename)) {
                    if (!$handle = fopen($filename, 'w')) {
                        echo "Cannot open file";
                    } else {
                        if (fwrite($handle, $a) == FALSE) {
                            echo "Cannot write to file";
                        } else {
                            echo $a;
                        }
                        fclose($handle);
                    }  
               } else {
                    echo "The file is not writable";
               }
             } 
        ?>

        <button onclick="echoVal()"> Increase </button>
     </body>
     </html>
4

1 回答 1

3

更新:我认为这个例子: https ://stackoverflow.com/a/3410025/49251可能会向您展示您正在尝试做什么我在下面的回答是试图提供有关您的第一次尝试为什么不起作用的背景信息。


PHP 中的静态变量仅在脚本执行期间“存在”。

该脚本仅在服务器上执行——只要服务器需要处理与请求关联的文件/脚本,脚本中的静态变量将仅是“活动的”。一旦处理了请求并发送了响应,PHP 就消失了。完毕。没活着。完成的。

浏览器端没有 PHP,并且在发送响应后,服务器不再针对您的请求运行任何内容(某些内存缓存策略可能是一个例外,但通常,我所描述的是正常的PHP 的工作方式)。

PHP 的 web 执行模型是:(1)请求,(2)服务器(通常是 Apache)运行 PHP 来处理请求的代码,发送响应(3)并完全完成。

做你想做的事:

  1. 您可以完全使用浏览器端代码(javascript),或者
  2. 您可以将按钮单击的结果发送到服务器,以便在数据库中持久化,并通过重新加载/重新生成页面或使用 ajax 在服务器上获取一些代码以运行并更新一部分来重新请求这些更新的结果相应的页面。
于 2013-01-12T19:21:21.893 回答