PHP AJAX的套路
Posted 不咋地科技
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了PHP AJAX的套路相关的知识,希望对你有一定的参考价值。
一段代码:
<html><head><meta charset="utf-8"><title>菜鸟教程(runoob.com)</title><script>function getVote(int) {
if (window.XMLHttpRequest) {
// IE7+, Firefox, Chrome, Opera, Safari 执行代码
xmlhttp=new XMLHttpRequest();
} else {
// IE6, IE5 执行代码
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange=function() {
if (xmlhttp.readyState==4 && xmlhttp.status==200)
{
document.getElementById("poll").innerHTML=xmlhttp.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>
poll_vote.php
<?php
$vote = htmlspecialchars($_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>
<span style="display: inline-block; background-color:green;
width:<?php echo(100*round($yes/($no+$yes),2)); ?>px;
height:20px;" ></span>
<?php echo(100*round($yes/($no+$yes),2)); ?>%
</td>
</tr>
<tr>
<td>否:</td>
<td>
<span style="display: inline-block; background-color:red;
width:<?php echo(100*round($no/($no+$yes),2)); ?>px;
height:20px;"></span>
<?php echo(100*round($no/($no+$yes),2)); ?>%
</td>
</tr></table>
套路:
在HTTP中创建一个元素,为该元素添加动作,传入元素中可变的值到一个function中,等待服务器返回数据。
函数内容:
(1)根据传入的值和浏览器类型,创建一个XMLHttpRequest对象
(2)指向html中要改变的元素,将它的内容改变为服务器的返回值(xmlhttp.responseText)
(3)向服务器中某一个后台处理文件(.php)创建请求,将html元素中的值以get或其他方式传到服务器,等待处理文件的回应
(4)发送请求
函数内容大同小异,随便改改就能用了
编写处理文件。(.php)
responseText的内容是什么?我将其理解为,.php文件运行后所有输出在网页中的内容都为响应的内容。也就是<?php?>标签中所有的打印的结果,和所有的php代码标签外的html代码内容。也许js的输出能返回?
xmlhttp.readyState==4 && xmlhttp.status==200
readyState和status的值可以在https://blog.csdn.net/u013381651/article/details/51261956查到
菜鸟教程的例子中,ajax的数据载体包括XML, txt和数据库。
以上是关于PHP AJAX的套路的主要内容,如果未能解决你的问题,请参考以下文章