zoukankan      html  css  js  c++  java
  • [置顶] 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 对象 ->指定发送地址及发送方法 -> 指定状态变化处理方法 -> 发送请求,请求发送后状态变化了就会自动调用指定的处理方法。

           接下来逐步深入理解……



  • 相关阅读:
    用javascript写星际飞机大战游戏
    Vue源码分析之实现一个简易版的Vue
    Vue源码分析之数据驱动
    Vue源码分析之虚拟DOM
    使用HbuilderX离线打包5+APP
    ERROR in build.js from UglifyJs
    PHP 的一些开发规范
    Markdown使用TOC自动生成导航栏
    Hexo博客skapp主题部署填坑指南
    Docker 官方安装详解
  • 原文地址:https://www.cnblogs.com/keanuyaoo/p/3341566.html
Copyright © 2011-2022 走看看