• xmlHttpRequest 对象使用方法总结


    不同的浏览器中创建XMLHttpRequest 对象使用不同的方法:

    //(方法1) IE 创建XMLHttpRequest 对象的方法

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

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

    // (方法2)Opera、Safari 和大部分非IE的浏览器 创建XMLHttpRequest 对象:

      var xmlhttp=new XMLHttpRequest();

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

      

    // (方法3)创建一个能兼容多浏览器的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<xml;i++){

      if(xmlhttp=new ActiveXObject(xmlhttp_arr[i]))

      break;

      }

      return xmlhttp;

      }

      }

      //这个是除了IE之外的浏览器创建XMLHttpRequest对象

      var xmlhttp=new XMLHttpRequest();

      创建xmlhttp成功后,然后再来看看它的一些属性和方法吧,还有最重要的onreadystatechange事件句柄

      方法:

      open() 初始化http请求参数,包括URL和http方法,但是不发送请求;

      abort() 取消当前响应,关闭连接并断开所有网络未结束的活动;

      getAllResponseHeaders() 把http响应头部作为未解析字符串返回;

      getResponseHeaders) 返回指定的http响应头的值;

      send() 发送http请求使用传递给open()方法的参数,以及传个该方法的可选请求体;

      setResponseHeader() 向一个打开但没有发送的请求设置或添加一个Http请求。

      属性:

      readyState 说明http请求的状态;(有5个状态分别是

      0 表示没有初始化;

      1 表示读取中

      2 表示已读取

      3 交互中(接受中)

      4 完成

      )

      responseText 说明为服务器接收到得响应体,如果没有接收到数据就返回空字符串;

      responseXML 说明对请求的回应 解析为XML并用document对象返回;

      status 说明http请求的状态;

      statusText 说明http请求状态不是以数字形式而是用名称;

      onreadystatechange 是readySate状态改变时调用事件的函数。

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

      生成一个XMLHTTPRequest对象

       var xmlhttp=CreatXMLHttp();
       xmlhttp.open("get","",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 对象 -> 指定发送地址及发送方法 -> 指定状态变化处理方法 -> 发送请求,请求发送后状态变化了就会自动调用指定的处理方法。

  • 相关阅读:
    day 50 jquery之看我操作
    day 49 JavaScript中BOM和DOM
    day 43 CSS前端
    day 42 前端HTML
    day 41 mysql索引以及前端的简介
    day 40 mysql 之视图,触发器,事务,存储过程及函数
    day 39数据库mysql之多表查询
    day 38 数据库MySQL之单表查询
    day 37 数据库MySQL基本操作
    39套漂亮的后台模板
  • 原文地址:https://www.cnblogs.com/TikyZheng/p/4637735.html
Copyright © 2020-2023  润新知