分类:
2008-04-15 17:51:22
可以说的上当今很火的啦.
在村子里经常看到有人问的技术,说实话,我觉得那东西太麻烦,用起来太费事.
ajax本身实现的机制不是很难,难的应该是在后期的javascript处理返回的responseText,responseXml
ajax本身的操作过程无外是:
1.构建一个xmlHTTP对像
2.通过xmlHTTP的同步或是异步方式发送数据(大部分都是异步方式)
3.如果是异步方式检查xmlHttp的状态变化
4.当状态变到readyState==4,而且status==200说明发送数据成功
5.这时候再通过javascript处理xmlHTTP的responseText或是responseXml(这两者是同时存在的)
下面来实现这个过程
1.构建一个xmlHTTP的对像
CODE:
function createRequest(){ if(typeof XMLHttpRequest!="undefined") { return new XMLHttpRequest(); }else if(typeof ActiveXObject!="undefined"){ var xmlHttp_ver = false; var xmlHttp_vers = ["MSXML2.XmlHttp.5.0","MSXML2.XmlHttp.4.0","MSXML2.XmlHttp.3.0","MSXML2.XmlHttp","Microsoft.XmlHttp"]; if(!xmlHttp_ver){ for(var i=0;i new ActiveXObject(xmlHttp_vers[i]); xmlHttp_ver = xmlHttp_vers[i]; break; }catch(oError){;} } } if(xmlHttp_ver){ return new ActiveXObject(xmlHttp_ver); }else{ throw new Error("Could not create HTTP Request."); } }else{ throw new Error("Your browser doesn't support an XML HTTP Request."); } } |
CODE:
var xmlHttp; xmlHttp = createRequest(); function sendPostRequest() { var shownum=document.getElementById("shownum").value;// 页面中一个id为shownum的input表单 var url = "show.php";//要发送到的URL var queryString = "shownum" + "=" + shownum; //向服务端发送请求 xmlHttp.open("post", url, true);//这里的第三个参数为true为异步方式处理 xmlHttp.onreadystatechange = showData;//异步方式处理,当状态改变时会调用onreadystatechange属性指定的回调函数showData xmlHttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded;");//这一句是用post方法发送的时候必须写的 xmlHttp.send(queryString);//发送你构建成的数据,如果为“get”方法时,这里可以写成xmlHttp.send(NULL); } |
CODE:
function showData() { var msg=document.getElementById("status"); //第4步 if(xmlHttp.readyState==4) { if(xmlHttp.status==200) { //只有当readyState为4并且status为200时,才表示符合要求 //下面这一句话,就相当于上面说的第5步,处理返回的结果 msg.innerHTML = xmlHttp.responseText; } } else { switch(xmlHttp.readyState) { case 0: msg.innerHTML="未初始化..."; break; case 1: msg.innerHTML="加载中..."; break; case 2: msg.innerHTML="连接完成..."; break; case 3: msg.innerHTML="交换数据..."; break; default: break; } } } |
CODE:
ajax 要发送的数据: |