美文网首页
Ajax+js实现异步交互

Ajax+js实现异步交互

作者: 石攻玉 | 来源:发表于2016-10-18 13:57 被阅读0次

    一提到异步交互大家就会说ajax, 仿佛ajax这个技术已经成为了异步交互的代名词。那下面将研究ajax的核心对象!

    利用ajax实现异步交互无非4步:

    • 创建ajax核心对象

    • 与服务器建立连接

    • 向服务器发送请求

    • 接收服务器响应的数据

    看似神秘的异步交互当明确这4步后,也许在大家脑海里已经有了初步的思路了。

    首先、我们创建ajax的核心对象,由于浏览器的兼容问题我们在创建ajax核心对象的时候不得考虑其兼容问题,因为要想实现异步交互的后面步骤都基于第一步是否成功的创建了ajax核心对象。

    
    function getXhr(){
            // 声明XMLHttpRequest对象 
           var xhr = null;
          // 根据浏览器的不同情况进行创建
          if (window.XMLHttpRequest){
                // 表示除IE外的其他浏览器
                xhr = new  XMLHttpRequest();
          } else {     
                // 表示IE浏览器
                xhr = new ActiveXObject('Microsoft.XMLHttp');
          }
          return  xhr;
    }
    
    // 创建核心对象
    var xhr = getXhr();
    

    通过上述代码我们已经成功的创建了ajax核心对象,我们保存在变量xhr中, 接下来提到的ajax核心对象都将以xhr代替.

    第二步、就是与服务器建立连接, 通过ajax核心对象调用open(method, url, async)方法.

    open方法的形参解释:

          method: 表示请求方式(get或post)
    
          url: 表示请求的php的地址(注意当请求类型为get的时候, 请求的数据将以问号"?"跟随url地址后面, 下面的send方法中将传入null值)
    
         async: 是个布尔值, 表示是否异步, 默认为true。在最新规范中这一项已经不在需要填写, 因为官方认为使用ajax就是为了实现异步.
    
    xhr.open("get",  "01.php?user=xianfeng");
    //这是get方式请求数据
    
    xhr.open("post",  "01.php");
    //这是以post方式请求数据
    

    第三步、我们将向服务器发送请求, 利用ajax核心对象调用send方法

    如果是post方式, 请求的数据将以name=value形式放在send方法里发送给服务器, get方式直接传入null值。

    xhr.send(
    "user=xianfeng"
    );
    //这是以post方式发送请求数据

    xhr.send(
    null
    );
    //这是以get方式

    第四步、接收服务器响应回来的数据。

    使用onreadystatechange事件监听服务器的通信状态,通过readyState属性获取服务器端当前通信状态,status获得状态码,利用responseText属性接收服务器响应回来的数据(这里指text类型的字符串格式数据),后面再写XML格式的数据和大名鼎鼎的json格式数据。

    xhr.onreadystatechange = function(){
           // 保证服务器端响应的数据发送完毕,保证这次请求必须是成功的
           if (xhr.readyState == 4 && xhr.status == 200){
                   // 接收服务器端的数据
                   var data = xhr.responseText;
    
                 // 测试
                 console.log(data);
           }
    };
    

    相关文章

      网友评论

          本文标题:Ajax+js实现异步交互

          本文链接:https://www.haomeiwen.com/subject/ivqtuttx.html