通过php中的函数更新变量值

时间:2013-01-12 19:11:02

标签: php javascript

我是网页开发的新手,这似乎是一个基本问题,但我无法弄清楚如何解决。

通过按钮我需要在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>

1 个答案:

答案 0 :(得分:2)

更新:我认为这个例子:https://stackoverflow.com/a/3410025/49251可能会向您显示完全您尝试做的事情。我在下面的回答是试图提供你的第一次尝试不起作用的背景。


PHP中的静态仅在脚本执行期间“生效”。

脚本仅在服务器上执行 - 只要服务器处理与请求关联的文件/脚本,脚本中的静态将只是“活动”。处理完请求并发送响应后,PHP就会消失。完成。没活着。结束。

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

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

要做你想做的事:

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