手动实现ajax 发表于 2018-08-06 | 分类于 Javascript , 数据交互 | 代码123456789101112131415161718192021222324252627282930313233343536373839404142434445464748function ajax(option){ option=option||{}; option.type=option.type||'get'; option.data=option.data||{}; option.dataType=option.dataType||'text'; let xhr=new XMLHttpRequest(); let arr=[]; for(let name in option.data){ arr.push(`${encodeURIComponent(name)}=${encodeURIComponent(option.data[name])}`); } let strData=arr.join('&'); if(option.type=='post'){ xhr.open('POST',option.url,true); xhr.setRequestHeader('content-type','application/x-www-form-urlencoded'); xhr.send(strData); }else{ xhr.open('GET',option.url+'?'+strData,true); xhr.send(); } //接收 xhr.onreadystatechange=()=>{ if(xhr.readyState==4){ if(xhr.status>=200 && xhr.status<300 ||xhr.status==304){ let data=xhr.responseText; switch(option.dataType){ case 'json': if(window.JSON && JSON.parse){ data=JSON.parse(data); }else{ data=eval('('+str+')'); } break; case 'xml': data=xhr.responseXML; break; } option.success && option.success(data); }else{ options.error && options.error(); } } }}