AJAX

/**
 * ajax 封装
 * @param {obj{url,type,data,success,error}} obj
 */
function ajax (obj) {
  obj = obj || {};
  obj.url = obj.url || '';
  obj.type = (obj.type || 'GET').toUpperCase();
  let params = formatParams(obj.data);
  let xhr = null;

  // 兼容性
  if (window.XMLHttpRequest) {
    xhr = new XMLHttpRequest();
  } else {
    xhr = new ActiveXObject('Microsoft.XMLHTTP');
  }

  // 发送请求
  if (obj.type === 'GET') {
    xhr.open(obj.type, obj.url + '?' + params, true);
    xhr.send(null);
  } else if (obj.type === 'POST') {
    xhr.open(obj.type, obj.url, true);
    xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
    xhr.send(params);
  }

  // 响应
  xhr.onreadystatechange = function () {
    if (xhr.readyState === 4) {
      if (xhr.status >= 200 && xhr.status < 300 || xhr.status == 304) {
        obj.success && obj.success(xhr.responseText);
      } else {
        obj.error && obj.error(xhr);
      }
    }
  }
  // 格式化请求参数
  function formatParams (data) {
    let arr = [];
    for (let i in obj) {
      arr.push(i + '=' + obj[i]);
    }
    return arr.join('&');
  }
}
// 使用
ajax({
  url: '',
  type: 'GET',
  data: {
    user: 'user',
    password: 'password'
  },
  success: function (data) {
    console.log(data)
  },
  error: function (e) {
    console.log(e);
  }
});
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容