方法一:
//ajax封装---简单
let xhr =new XMLHttpRequest() || new ActiveXObject("Microsoft.XMLHTTP");
function myAjax(method,url,params,callback,async){//async-false 同步 true-异步
if(async==undefined){//如果用户没有指定同步还是异步,那么就是异步
async=true;
}
xhr.onreadystatechange=function (){
if(xhr.readyState==4&&xhr.status==200){
callback()
}
}
if(method=="get"){
xhr.open(method,url+"?"+params,async)
xhr.send(null)
}else if(method=="post"){
xhr.open(method,url);
xhr.setRequestHeader("Content-type","application/x-www-form-urlencoded");
xhr.send(params)
}
}
// myAjax("get","/getUser.do","user=admin",showMsg)
方法2
//ajax封装
/*
*
* ajax({
* url:"/login.do",
* type:"post",
* data:{
* username:"admin",
* password:123
* }, ==> username=admin && password=123
* async:true,
* success:function(){},
* error:function(){}
* })
*
*
* */
function ajax(json){
// console.log(json.url);
// console.log(json.async);//
json=json || {};//是否传递了参数,如果没有传参就赋值空对象
//判断向服务器发起请求的地址是否存在,如果不存在就结束
if(!json.url){
return;
}
//判断是否有type属性,如果没有type属性默认就是get请求
json.type=json.type || "get";
//判断data,如果没有就是空对象
json.data=json.data || {}
//判断是否有同步异步的设置,如果没有默认异步
// json.async= json.async || true; ---错误写法,这样写永远只有true
if(json.async==undefined){
json.async= true
}else{
json.async= json.async;
}
let xhr =new XMLHttpRequest() || new ActiveXObject("Microsoft.XMLHTTP");
//回调函数
xhr.onreadystatechange=function (){
console.log(xhr.readyState)
if(xhr.readyState==4){
// console.log(xhr.status)
if(xhr.status>=200 && xhr.status<=300 || xhr.status==304){
//成功了
console.log("成功了")
json.success&&json.success(xhr.responseText);
}else{
json.error&&json.error(xhr.status);
}
}
}
//判断post 还是 get请求
switch (json.type.toLowerCase()){
case "get":
xhr.open("get",json.url+"?"+toJson(json.data),json.async)// {} username=admin&&password=123
xhr.send(null);
break;
case "post":
xhr.open("post",json.url,json.async)
xhr.setRequestHeader("Content-type","application/x-www-form-urlencoded")
xhr.send(toJson(json.data));
break;
}
}
function toJson(json){
let arr=[]
for(let name in json){
arr.push(name+"="+json[name]); }
return arr.join("&") //username='admin'&&password=123
}
// ajax(canshu1,canshu2,canshu3)
// ajax({
// canshu1:"",
// canshu2:"",
// canshu3:""
// })