欢迎来到Doc100.Net免费学习资源知识分享平台!
您的位置:首页 > 程序异常 >

ajax核心-xmlhttprequest对象

更新时间: 2014-01-05 02:01:33 责任编辑: Author_N1

 

Ajax核心--XMLHttpRequest对象

XMLHttpRequest 对象是AJAX功能的核心,学习XMLHttpRequest对象就先从创建XMLHttpRequest 对象开始,了解在不同的浏览器中创建XMLHttpRequest 对象使用不同的方法:

以前只是听说有些浏览器不太支持Ajax,后来浏览器逐渐的兼容了这个浏览器,现在来看明白了很多,根据代码看实质性的代码:

 

先看看IE创建XMLHttpRequest对象的方法(方法1):

var xmlhttp=ActiveXobject("Msxml12.XMLHTTP");//较新的IE版本创建Msxml12.XMLHTTP

对象

  var xmlhttp=ActiveXobject("Microsoft.XMLHTTP");//较老的IE版本创建

Microsoft.XMLHTTP对象


 而Mozilla、Opera、Safari 和大部分非IE的浏览器都使用下面这种方法(方法2)创建XMLHttpRequest 对象:

 var xmlhttp=new XMLHttpRequest();


注意:实际上InternetExplorer 使用了一个名为 XMLHttp 的对象,而不是 XMLHttpRequest 对象,而 Mozilla、Opera、Safari 和大部分非 Microsoft 浏览器都使用的是后者(下文统称 XMLHttpRequest 对象)。IE7开始也开始使用XMLHttpRequest 对象了。

 

 因此我们需要创建一个能兼容多浏览器的XMLHTTPRequest对象:

 

第一种方法:

 

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成功


}

 第二种方法:


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;


}

}

下面是一个发送请求数据并返回结果的xmlhttpRequest对象;

 生成一个XMLHTTPRequest对象
 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);
}
}
 }


 

       注意:所以我们应该按照上面的流程来记忆:创建XMLHttpRequest 对象 ->指定发送地址及发送方法 -> 指定状态变化处理方法 -> 发送请求,请求发送后状态变化了就会自动调用指定的处理方法。

       接下来逐步深入理解……



1楼liuyanlinglanq6小时前
点点滴滴的积累,期待下一篇博客
上一篇:上一篇
下一篇:下一篇

 

随机推荐程序问答结果

 

 

如对文章有任何疑问请提交到问题反馈,或者您对内容不满意,请您反馈给我们DOC100.NET论坛发贴求解。
DOC100.NET资源网,机器学习分类整理更新日期::2014-01-05 02:01:33
如需转载,请注明文章出处和来源网址:http://www.doc100.net/bugs/t/4662/
本文WWW.DOC100.NET DOC100.NET版权所有。