原生JS封装Ajax

时间:2022-09-23 21:55:08

function json2url(json){
  //json参数转字符串
  json.t=''+Math.random();
  json.t=json.t.replace('.','');
  var arr=[];
  for(var name in json){
    arr.push(name+'='+json[name]);
  }
  return arr.join('&');
}
//url,data,type,success,error
function ajax(json){
  var json=json;
  if(!json.url)return;
  json.data=json.data||{};
  json.type=json.type||'get';

  //创建ajax对象
  var oAjax=new XMLHttpRequest();

  //连接方式、发送
  switch(json.type.toLowerCase()){
    case 'get':
      oAjax.open('GET',json.url+'?'+json2url(json.data),true);
      oAjax.send();
    break;
    case 'post':
      oAjax.open('POST',json.url,true);
      oAjax.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
      oAjax.send(json2url(json.data));
    break;
  }
  //接收
  oAjax.onreadystatechange=function (){
    if(oAjax.readyState==4){
      if(oAjax.status>=200&&oAjax.status<300||oAjax.status==304){
        json.success&&json.success(oAjax.responseText);
      }else{
        json.error&&json.error(oAjax.status);
      }
    }
  };
}

//调用
ajax({
  url:'a.txt',
  data:{},
  type:'',
  success:function (str){
    alert(str);
  },
  error:function(data){
      alert(data)
  }
});