您的位置:首页 > Web前端 > JavaScript

封装多种方式的ajax异步方法

2017-04-17 20:16 281 查看
       // 准备一个 对象

      // 如果参数使用逗号分隔 写多个

      // 那么用户 需要去记忆参数的 顺序,以及每一个参数的作用

     var my$_pro = {

      get: function (url,data, success) {

         //1.创建异步对象

           var xhr = newXMLHttpRequest();

         // 由于是 get请求

         // 数据 需要拼接在 url中

    url += '?';

    url += data;

    //2.设置属性(请求头,请求行)

    xhr.open('get', url);

    //4.注册状态改变事件

    xhr.onreadystatechange = function () {

    //5.判断状态&请求是否成功并使用数据

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

    success(xhr.responseText);
}

     }

        //3.发送请求 请求主体

         xhr.send(null);

 },

     post: function (url,data, success) {

//1.创建异步对象 

var xhr = newXMLHttpRequest();

  //2.设置属性(请求头,请求行)

xhr.open('post', url);

// 设置 请求头

xhr.setRequestHeader('content-type','application/x-www-form-urlencoded');

//4.注册状态改变事件

xhr.onreadystatechange = function () {

//5.判断状态&请求是否成功并使用数据

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

     success(xhr.responseText);
  }

       }

  //3.发送请求 请求主体

xhr.send(data);

  },

ajax: function (option) {

   //1.创建异步对象

var xhr = newXMLHttpRequest();

// 如果是get方式,url 可能需要拼接

if (option.type == 'get') {

  option.url += '?';

  option.url += option.data;

// 如果 这里 使用了 data 那么 send 这个方法中 null

  option.data = null;
}

//2.设置属性(请求头,请求行)

xhr.open(option.type, option.url);

// 设置 请求头

if (option.type == 'post') {
xhr.setRequestHeader('content-type','application/x-www-form-urlencoded');
}

//4.注册状态改变事件

xhr.onreadystatechange = function () {

//5.判断状态&请求是否成功并使用数据

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

// xhr 判断数据是json格式还是xml格式

var value = xhr.getResponseHeader('Content-Type');

// 如果有 xml

if (value.indexOf('xml') != -1) {

option.success(xhr.responseXML);

} else if (value.indexOf('json') != -1) {

// 如果是json数字据 那么 帮忙 把转换的操作也做了

option.success(JSON.parse(xhr.responseText));

} else {

option.success(xhr.responseText);
}
  }
    }

//3.发送请求 请求主体

xhr.send(option.data);

      }

  }
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
相关文章推荐