PHP 示例 - AJAX 投票
AJAX 投票
下面的示例将演示一个无需重新加载即可显示结果的投票。
您到目前为止喜欢 PHP 和 AJAX 吗?
示例说明 - HTML 页面
当用户选择上面的选项时,会执行一个名为“getVote()”的函数。该函数由“onclick”事件触发
<html>
<head>
<script>
function getVote(int) {
var xmlhttp=new XMLHttpRequest();
xmlhttp.onreadystatechange=function() {
if (this.readyState==4 && this.status==200) {
document.getElementById("poll").innerHTML=this.responseText;
}
}
xmlhttp.open("GET","poll_vote.php?vote="+int,true);
xmlhttp.send();
}
</script>
</head>
<body>
<div id="poll">
<h3>您到目前为止喜欢 PHP 和 AJAX 吗?</h3>
<form>
是:<input type="radio" name="vote" value="0" onclick="getVote(this.value)"><br>
否:<input type="radio" name="vote" value="1" onclick="getVote(this.value)">
</form>
</div>
</body>
</html>
getVote() 函数执行以下操作
- 创建一个 XMLHttpRequest 对象
- 创建服务器响应准备好时要执行的函数
- 将请求发送到服务器上的文件
- 请注意,参数(vote)已添加到 URL 中(带有是或否选项的值)
PHP 文件
由上面的 JavaScript 调用的服务器上的页面是名为“poll_vote.php”的 PHP 文件
<?php
$vote = $_REQUEST['vote'];
//获取文本文件的内容
$filename = "poll_result.txt";
$content = file($filename);
//将内容放入数组
$array = explode("||", $content[0]);
$yes = $array[0];
$no = $array[1];
if ($vote == 0) {
$yes = $yes + 1;
}
if ($vote == 1) {
$no = $no + 1;
}
//将投票插入文本文件
$insertvote = $yes."||".$no;
$fp = fopen($filename,"w");
fputs($fp,$insertvote);
fclose($fp);
?>
<h2>结果:</h2>
<table>
<tr>
<td>是:</td>
<td><img src="poll.gif"
width='<?php echo(100*round($yes/($no+$yes),2)); ?>'
height='20'>
<?php echo(100*round($yes/($no+$yes),2)); ?>%
</td>
</tr>
<tr>
<td>否:</td>
<td><img src="poll.gif"
width='<?php echo(100*round($no/($no+$yes),2)); ?>'
height='20'>
<?php echo(100*round($no/($no+$yes),2)); ?>%
</td>
</tr>
</table>
值从 JavaScript 发送,并执行以下操作
- 获取“poll_result.txt”文件的内容
- 将文件内容放入变量中,并为选定的变量加一
- 将结果写入“poll_result.txt”文件
- 输出投票结果的图形表示
文本文件
文本文件(poll_result.txt)是我们存储投票数据的地方。
它的存储方式如下
0||0
第一个数字表示“是”票数,第二个数字表示“否”票数。
注意:请记住允许您的 Web 服务器编辑文本文件。不要给所有人访问权限,只给 Web 服务器(PHP)访问权限。