php 中ajax get与post请求

1、使用ajax与服务器通信的的步骤:

①     创建一个XMLHttpRequest对象

②     创建url,data,通过 xmlHttpRequest.send()

③     服务器端接收 ajax的请求,做相应处理(操作数据库),然后返回结果(用 echo 语句返回结果)

④     客户端通过xmlHttpRequest的属性 reponseText , responseXML 取的数据,然后就完成局部刷新当前页面任务

2、XMLHttpRequest 对象属性

属性 描述
onreadystatechange 存储函数(或函数的名称)在每次 readyState 属性变化时被自动调用。
readyState 存放了 XMLHttpRequest 的状态。从 0 到 4 变化:
0:请求未初始化
1:服务器建立连接
2:收到的请求
3:处理请求
4:请求完成和响应准备就绪
responseText 返回作为一个字符串的响应数据。
responseXML 返回作为 XML 数据响应数据。
status 返回状态数(例如 "404" 为 "Not Found" 或 "200" 为 "OK")。
statusText 返回状态文本(如 "Not Found" 或 "OK")。

3、XMLHttpRequest 对象方法

方法 描述
abort() 取消当前的请求。
getAllResponseHeaders() 返回头信息。
getResponseHeader() 返回指定的头信息。
open(method,url,async,uname,pswd) 规定请求的类型,URL,请求是否应该进行异步处理,以及请求的其他可选属性。 

method:请求的类型:GET 或 POST
url:文件在服务器上的位置
async:true(异步)或 false(同步)
send(string) 发送请求到服务器。

string:仅用于 POST 请求
setRequestHeader() 把标签/值对添加到要发送的头文件。

4、ajax发送get请求方法:

[javascript]  view plain  copy
  1. <script>  
  2. function loadXMLDoc(){  
  3.     var xmlhttp;  
  4.     //创建一个XMLHttpRequest对象  
  5.     if (window.XMLHttpRequest){  
  6.         // code for IE7+, Firefox, Chrome, Opera, Safari  
  7.         //对于以上浏览器采用下面方法创建  
  8.         xmlhttp=new XMLHttpRequest();  
  9.     }else{  
  10.             // code for IE6, IE5  
  11.             //对于以上浏览器采用下面方法创建  
  12.         xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");  
  13.     }  
  14.     //每次readyState发生变化时执行以下函数  
  15.     xmlhttp.onreadystatechange=function(){  
  16.         if (xmlhttp.readyState==4 && xmlhttp.status==200){  
  17.             //将ajax请求返回的值赋给id为 myDiv的元素  
  18.             document.getElementById("myDiv").innerHTML=xmlhttp.responseText;  
  19.         }  
  20.     }  
  21.     //规定请求的类型,URL,请求是否应该进行异步处理,以及请求的其他可选属性。   
  22.     xmlhttp.open("GET","/try/ajax/demo_get.php",true);  
  23.     //发送请求  
  24.     xmlhttp.send();  
  25. }  
  26. </script>  
5、以用户注册为例,以get方式发送请求实例:

register.php

[php]  view plain  copy
  1. <html>  
  2. <head>  
  3. <title>用户注册</title>  
  4. <meta http-equiv="content-type" content="text/html;charset=utf-8"/>  
  5. <script type="text/javascript">  
  6.     //创建ajax引擎  
  7.     function getXmlHttpObject(){  
  8.         var xmlHttpRequest;  
  9.         //不同的浏览器获取对象xmlhttprequest 对象方法不一样  
  10.         if(window.ActiveXObject){  
  11.             xmlHttpRequest=new ActiveXObject("Microsoft.XMLHTTP");  
  12.         }else{  
  13.             xmlHttpRequest=new XMLHttpRequest();  
  14.         }  
  15.         return xmlHttpRequest;  
  16.     }  
  17.     var myXmlHttpRequest="";  
  18.     //验证用户名是否存在  
  19.     function checkName(){  
  20.         myXmlHttpRequest=getXmlHttpObject();  
  21.         //怎么判断创建ok  
  22.         if(myXmlHttpRequest){  
  23.             //通过myXmlHttpRequest对象发送请求到服务器的某个页面  
  24.             //第一个参数表示请求的方式, "get" / "post"  
  25.             //第二个参数指定url,对哪个页面发出ajax请求(本质仍然是http请求)  
  26.             //第三个参数表示 true表示使用异步机制,如果false表示不使用异步,即同步机制。  
  27.             var url="/ajax/registerProcess.php?mytime="+new  Date()+"&username="+$("username").value;  
  28.             //打开请求.  
  29.             myXmlHttpRequest.open("get",url,true);  
  30.             //指定回调函数.chuli是函数名  
  31.             myXmlHttpRequest.onreadystatechange=chuli;  
  32.             //真的发送请求,如果是get请求则填入 null即可  
  33.             //如果是post请求,则填入实际的数据  
  34.             myXmlHttpRequest.send(null);   
  35.         }  
  36.     }  
  37.   
  38.     //回调函数  
  39.     function chuli(){  
  40.         //window.alert("处理函数被调回"+myXmlHttpRequest.readyState);  
  41.         //我要取出从registerPro.php页面返回的数据  
  42.         if(myXmlHttpRequest.readyState==4){  
  43.             //取出值,根据返回信息的格式定.text  
  44.             //window.alert("服务器返回"+myXmlHttpRequest.responseText);  
  45.             $('myres').value=myXmlHttpRequest.responseText;  
  46.         }  
  47.     }  
  48.     //这里我们写一个函数  
  49.     function $(id){  
  50.         return document.getElementById(id);  
  51.     }  
  52. </script>  
  53. </head>  
  54. <body>  
  55.     <form action="???" method="post">  
  56.     用户名字:<input type="text"  οnkeyup="checkName();"  name="username1" id="username"><input type="button" οnclick="checkName();"  value="验证用户名">  
  57.     <input style="border-width: 0;color: red" type="text" id="myres">  
  58.     <br/>  
  59.     用户密码:<input type="password" name="password"><br>  
  60.     电子邮件:<input type="text" name="email"><br/>  
  61.     <input type="submit" value="用户注册">  
  62.     </form>  
  63.      <form action="???" method="post">  
  64.     用户名字:<input type="text" name="username2" >  
  65.      
  66.     <br/>  
  67.     用户密码:<input type="password" name="password"><br>  
  68.     电子邮件:<input type="text" name="email"><br/>  
  69.     <input type="submit" value="用户注册">  
  70.     </form>  
  71.   
  72. </body>  
  73. </html>  

registerpro.php

[php]  view plain  copy
  1. <span style="font-size:18px;"><?php  
  2.     //这里两句话很重要,第一讲话告诉浏览器返回的数据是xml格式  
  3.     header("Content-Type: text/xml;charset=utf-8");  
  4.     //告诉浏览器不要缓存数据  
  5.     header("Cache-Control: no-cache");  
  6.     //接收数据  
  7.     $username=$_GET['username'];  
  8.     if($username=="shunping"){  
  9.         //注意,这里数据是返回给请求的页面.用echo语句返回  
  10.         echo "用户名不可以用";  
  11.     }else{  
  12.         echo "用户名可以用";  
  13.     }  
  14. ?>   </span>  

 6、ajax发送post请求方法:

[javascript]  view plain  copy
  1. <script>  
  2. function loadXMLDoc(){  
  3.     var xmlhttp;  
  4.     if (window.XMLHttpRequest){  
  5.         // code for IE7+, Firefox, Chrome, Opera, Safari  
  6.         xmlhttp=new XMLHttpRequest();  
  7.     }else{  
  8.         // code for IE6, IE5  
  9.         xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");  
  10.     }  
  11.     xmlhttp.onreadystatechange=function(){  
  12.         if (xmlhttp.readyState==4 && xmlhttp.status==200){  
  13.             document.getElementById("myDiv").innerHTML=xmlhttp.responseText;  
  14.         }  
  15.     }  
  16.     xmlhttp.open("POST","/try/ajax/demo_post2.php",true);  
  17.     //下面这句话必须有  
  18.     //把标签/值对添加到要发送的头文件。  
  19.     xmlhttp.setRequestHeader("Content-type","application/x-www-form-urlencoded");  
  20.     xmlhttp.send("fname=Henry&lname=Ford");  
  21.     }  
  22. </script>  

7、使用get方式发出请求,如果提交的用户名不变化,浏览器将不会真的发请求,而是从缓存取数据、url

解决方法:

1、url 后带一个总是变化的参数,比如当前时间

      varurl="/ajax/registerProcess.php?mytime="+new Date()+"&username="+$("username").value;

2、在服务器回送结果时,禁用缓存.

//这里两句话很重要,第一讲话告诉浏览器返回的数据是xml格式

header("Content-Type:text/xml;charset=utf-8");

//告诉浏览器不要缓存数据

header("Cache-Control:no-cache");


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值