function ajax(obj){ var defaults = { type: 'get', url: '#', data:{}, dataType: 'text', async : true, success: function(data){console.log(data)} }; for(var key in obj){//遍历obj,key是键,比如usename:'ls',那么username是键,ls是值,处理形参,传递参数的时候就覆盖默认参数,不传递就使用默认参数 defaults[key] = obj[key]; } var xhr = null;//1.创建XMLHttpReque对象 if(window.XMLHttpRequest){ var xhr = new XMLHttpRequest(); }else{//为了兼容ie6 var xhr = new ActiveXObject("microsoft.XMLHTTP"); } var param = '';//吧对象形参的参数转化为字符串形式的参数 for(var attr in defaults.data){ param +=attr+"="+defaults.data[attr]+"&";//把传递进来的地址进行分割 } if(param){ param = param.substring(0,param.length-1); } if(defaults.type =="get"){ defaults.url += '?'+encodeURI(param);//encodeURI避免中文乱码 }//2.准备发送(设置发送的参数) xhr.open(defaults.type,defaults.url,defaults.async); var data =null;//处理post请求参数并且设置请求头信息(必须设置) if (defaults.type =="post") { data =param; xhr.setRequestHeader("Content-Type","application/x-www-form-urlencoded");//post传递必须要在表头加 } xhr.send(data);//3.执行发送动作 if(!defaults.async){//处理同步请求,不会调用回调函数 if(defaults.dataType =="json"){ return JSON.parse(xhr.responseText); }else{ return xhr.responseText; } }//指定回调函数(处理服务器响应数据) xhr.onreadystatechange=function(data){ if (xhr.readyState ==4) { if(xhr.status ==200){ var data = xhr.responseText; if(defaults.dataType =="json"){ data = JSON.parse(data); } defaults.success(data); } } } }