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>

套路:

  1. 在HTTP中创建一个元素,为该元素添加动作,传入元素中可变的值到一个function中,等待服务器返回数据。

  2. 函数内容:

    (1)根据传入的值和浏览器类型,创建一个XMLHttpRequest对象

    (2)指向html中要改变的元素,将它的内容改变为服务器的返回值(xmlhttp.responseText)

    (3)向服务器中某一个后台处理文件(.php)创建请求,将html元素中的值以get或其他方式传到服务器,等待处理文件的回应

    (4)发送请求

    函数内容大同小异,随便改改就能用了

  3. 编写处理文件。(.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的套路的主要内容,如果未能解决你的问题,请参考以下文章

AJAX相关JS代码片段和部分浏览器模型

$.ajax 常用的套路

调用ajax的一种套路

超级有用的9个PHP代码片段

PHP必用代码片段

超实用的php代码片段