我是网页开发的新手,这似乎是一个基本的问题,但我不知道如何解决。
通过一个按钮,我需要改变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>
更新:我认为这个例子:https://stackoverflow.com/a/3410025/49251可能会告诉你确切如何做你想做的事情。我下面的回答是试图提供一个背景,为什么你的第一次尝试没有成功。
PHP中的静态只在脚本执行期间"存在"。
脚本只在服务器上执行——只有当服务器处理与请求相关联的文件/脚本时,脚本中的静态信息才会"有效"。一旦处理了请求并发送了响应,PHP就消失了。完成了。不是活着。完成。
浏览器端没有PHP,服务器在响应发送后不再运行任何与您的请求相关的内容(一些内存缓存策略可能是例外,但通常,我所描述的是PHP的正常工作方式)。
PHP的web执行模型是:(1)请求,(2)服务器(通常是Apache)运行PHP处理请求代码,发送响应(3)并完成。
做你想做的事:
- 你可以完全使用浏览器端代码(javascript),或者
- 你可以将按钮点击的结果发送到服务器,在数据库中持久化,并重新请求那些更新的结果,通过重新加载/重新生成页面或使用ajax在服务器上获得一些代码来运行并相应地更新页面的一部分。