原生js实现Ajax

一般来说,大家可能都会习惯使用JQuery提供的Ajax方法,但是用原生的js怎么去实现Ajax发送呢?

  jquery提供的方法:

    $.ajax({

      url:" ",

      type:" ",

      data: " " ,

      dataType: " ",

      success:funtion(){

      },

      error:function(){

      }

    })

原生的js 实现 Ajax方法:

  var Ajax = {

     get: function(url,fn){

      var obj = new XMLHttpRequest(); // XMLHttpRequest 对象 用于在后台与服务器交换数据

      obj.open("GET",url,true);

      obj.onreadystautechange = function(){

        if(obj.readyState == 4 && obj.status == 200 || obj.status ==304){ // readyState == 4  说明请求已完成

           fn.call(this,obj.responseText); // 从服务器获的数据 

         }

      };

      obj.send(null);

     },

   post:function(url,data,fn){

     var obj = new XMLHttpRequest();

     obj.open("POST",url,true);

     obj.setRequestHeader("Content-type","application/X-www-from-urlencoded"); //发送信息至服务器是内容编码类型

     obj.onreadystatechange = function(){

       if(obj.readyState == 4 && obj.status == 200){

         fn.call(this,obj.responseText);// 返回结果

       }

     }

    obj.send(data)

   }

  };

注释:

  1. open() 方法需要三个参数:

      第一参: 定义发送请求所使用的方法,(GET,POST).与POST相比,GET更简单也更快,并且在大部分情况下都能使用,然而,在以下情况中,请使用POST请求:

          无法使用缓存文件(更新服务器上的文件或数据库)

          向服务器发送大量数据(post没有数据量限制)

          发送包含未知字符的用户输入时,POST 比 GET 更稳定也更可靠 

      第二个参数规定服务器端脚本的 URL(该文件可以是任何类型的文件,比如 .txt 和 .xml,或者服务器脚本文件,比如 .asp 和 .php (在传回响应之前,能够在服务器上执行任务))。

      第三个参数规定应当对请求进行异步地处理(true(异步)或 false(同步))。

  2.  send() 方法可将请求送往服务器。

  3. onreadystatechange 属性存有处理服务器响应的函数。

 

  4. readyState 属性存有服务器响应的状态信息。每当 readyState 改变时,onreadystatechange 函数就会被执行。

 

posted @ 2019-03-21 22:03  Zprincipal  阅读(171)  评论(0编辑  收藏