原生js实现ajax

2020-02-24  本文已影响0人  609865d31336
function ajax(){

  var ajaxData = {

    type:arguments[0].type || "GET",

    url:arguments[0].url || "",

    async:arguments[0].async || "true",

    data:arguments[0].data || null,

    dataType:arguments[0].dataType || "text",

    contentType:arguments[0].contentType || "application/x-www-form-urlencoded",

    beforeSend:arguments[0].beforeSend || function(){},

    success:arguments[0].success || function(){},

    error:arguments[0].error || function(){}

  }

  ajaxData.beforeSend();

  var data=convertData(ajaxData.data);

  var xhr = createxmlHttpRequest();

  ajaxData.url= ajaxData.type.toLowerCase()==='get'?ajaxData.url+"?"+data:ajaxData.url

  xhr.responseType=ajaxData.dataType;

  xhr.open(ajaxData.type,ajaxData.url,ajaxData.async); 

  xhr.setRequestHeader("Content-Type",ajaxData.contentType); 

  if(ajaxData.type.toLowerCase()==='get'){

  xhr.send(data); 

  }else{

  xhr.send();

  }

//请求状态码判断是否成功

  xhr.onreadystatechange = function() { 

    if (xhr.readyState == 4) { 

      if(xhr.status == 200){

        ajaxData.success(xhr.response)

      }else{

        ajaxData.error()

      } 

    }

  } 

}

//创建XmlHttpRequest对象

function createxmlHttpRequest() { 

  if (window.ActiveXObject) { 

    return new ActiveXObject("Microsoft.XMLHTTP"); 

  } else if (window.XMLHttpRequest) { 

    return new XMLHttpRequest(); 

  } 

}



function convertData(data){

  if( typeof data === 'object' ){

    var convertResult = "" ; 

    for(var c in data){ 

      convertResult+= c + "=" + data[c] + "&"; 

    } 

    convertResult=convertResult.substring(0,convertResult.length-1)

    return convertResult;

  }else{

    return data;

  }

}
上一篇 下一篇

猜你喜欢

热点阅读