当前位置:编程学习 > XML/UML >>

Ajax核心--XMLHttpRequest对象

XMLHttpRequest 对象是AJAX功能的核心,学习XMLHttpRequest对象就先从创建XMLHttpRequest 对象开始,了解在不同的浏览器中创建XMLHttpRequest 对象使用不同的方法:
以前只是听说有些浏览器不太支持Ajax,后来浏览器逐渐的兼容了这个浏览器,现在来看明白了很多,根据代码看实质性的代码:
 
先看看IE创建XMLHttpRequest对象的方法(方法1):
[java] view plaincopyprint?
<span style="font-size:18px">var xmlhttp=ActiveXobject("Msxml12.XMLHTTP");//较新的IE版本创建Msxml12.XMLHTTP  
  
对象  
  
  var xmlhttp=ActiveXobject("Microsoft.XMLHTTP");//较老的IE版本创建  
  
Microsoft.XMLHTTP对象</span>  
 
 
 而Mozilla、Opera、Safari 和大部分非IE的浏览器都使用下面这种方法(方法2)创建XMLHttpRequest 对象:
 
<span style="font-size:18px"> var xmlhttp=new XMLHttpRequest();</span>  

 

 
 
注意:实际上InternetExplorer 使用了一个名为 XMLHttp 的对象,而不是 XMLHttpRequest 对象,而 Mozilla、Opera、Safari 和大部分非 Microsoft 浏览器都使用的是后者(下文统称 XMLHttpRequest 对象)。IE7开始也开始使用XMLHttpRequest 对象了。
 
 因此我们需要创建一个能兼容多浏览器的XMLHTTPRequest对象:
 
第一种方法:
 
 
<span style="font-size:18px">var xmlhttp=false;//创建一个新变量并赋值false,使用false作为判断条件说明还没有  
  
创建XMLHTTPRequest对象  
  
  function CreateXMLHttp(){  
  
  try{  
  
   xmlhttp=new XMLHttpRequest();//尝试创建 XMLHttpRequest 对象,除 IE 外的浏览器  
  
都支持这个方法。  
  
}catch(e){  
  
  try{  
  
  xmlhttp=ActiveXobject("Msxml12.XMLHTTP");//使用较新版本的 IE 创建 IE 兼容的对  
  
象(Msxml2.XMLHTTP)。  
  
}catch(e){  
  
  try{  
  
  xmlhttp=ActiveXobject("Microsoft.XMLHTTP");//使用较老版本的 IE 创建 IE 兼容的  
  
对象(Microsoft.XMLHTTP)。  
  
}catch(failed){  
  
    xmlhttp=false;//如果失败了还保持false  
  
  
}  
  
}  
  
}  
  
return xmlhttp;  
  
}  
  
判断是否成功的例子:  
  
if(!xmlhttp){  
  
 创建xmlhttp失败  
  
  
}else{  
  
 创建xmlhttp成功  
  
  
}</span>  

 

 
 
 第二种方法:
 
 
<span style="font-size:18px">if(typeof(XMLHttpRequest)=="undefined" && window.ActiveXObject){  
  
  function XMLHttpRequest(){  
  
  var xmlhttp_arr=["MSXML2.XMLHTTP","Microsoft.XMLHTTP"];  
  
  var xmlhttp;  
  
  
  for(i=0;i<xmlhttp_arr.length;i++){  
  
   if(xmlhttp=new ActiveXObject(xmlhttp_arr[i]))  
  
   break;  
  
  
}  
  
  return xmlhttp;  
  
  
}  
  
}</span>  

 

 
 
下面是一个发送请求数据并返回结果的xmlhttpRequest对象;
 
 生成一个XMLHTTPRequest对象
 
<span style="font-size:18px"> var xmlhttp=CreatXMLHttp();  
 xmlhttp.open("get","http://www.blog.sina.com.cn/jaryle",true);  
 xmlhttp.onReadyStateChange=getresult;  
//怎么告诉XMLHttpRequest 对象状态变化时让谁来处理这个变化呢用到二种方法:一种是  
  
匿名方法xmlhttp.onReadyStateChange=function(){处理变化的代码}  
另一种方法:指定方法:xmlhttp.onReadyStateChange=getresult;  
    function getresult(){处理变化的代码}  
 xmlhttp.send();  
 function getresult(){  
 if(xmlhttp.readyState==4){ //当readyState的状态等于4时表示接收到数据  
 if(xmlhttp.status==200){ //这个时候就需要用到status属性,即由服务器返回的 HTTP   
  
状态代码。 xmlhttp.status 等于200时表示传输过程完整没有错误  
 alert(xmlhttp.responseText);  
}  
}  
 }</span>  

 

 
 
 
  
       注意:所以我们应该按照上面的流程来记忆:创建XMLHttpRequest 对象 ->指定发送地址及发送方法 -> 指定状态变化处理方法 -> 发送请求,请求发送后状态变化了就会自动调用指定的处理方法。
       接下来逐步深入理解……
补充:软件开发 , Java ,
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,