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.   
5、以用户注册为例,以get方式发送请求实例:

register.php

[php]  view plain  copy
  1.   
  2.   
  3. 用户注册  
  4. "content-type" content="text/html;charset=utf-8"/>  
  5. "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.   
  53.   
  54.   
  55.     "???" method="post">  
  56.     用户名字:"text"  οnkeyup="checkName();"  name="username1" id="username">"button" οnclick="checkName();"  value="验证用户名">  
  57.     "border-width: 0;color: red" type="text" id="myres">  
  58.     
      
  59.     用户密码:"password" name="password">
      
  60.     电子邮件:"text" name="email">
      
  61.     "submit" value="用户注册">  
  62.       
  63.      "???" method="post">  
  64.     用户名字:"text" name="username2" >  
  65.      
  66.     
      
  67.     用户密码:"password" name="password">
      
  68.     电子邮件:"text" name="email">
      
  69.     "submit" value="用户注册">  
  70.       
  71.   
  72.   
  73.   

registerpro.php

[php]  view plain  copy
  1. "font-size:18px;">
  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. ?>     

 6、ajax发送post请求方法:

[javascript]  view plain  copy
  1.   

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");


你可能感兴趣的:(php,ajax,通信)