//創(chuàng)建函數(shù),需傳入的參數(shù):請求方式,請求接口地址,請求參數(shù)睹簇,請求成功回調函數(shù),請求失敗回調函數(shù)
function ajaxFun(method,url,data,successFn,failFn){
//1寥闪、瀏覽器器適配太惠,根據(jù)瀏覽器的支持情況創(chuàng)建XMLHttpRequest對象
var xhr = window.XMLHttpRequest ? new XMLHttpRequest() : new ActiveXObject("Microsoft.XMLHTTP");
//2、判斷請求方式的類型(為了方便判斷疲憋,把method的字母全部轉換為大寫)
upperMethod = method.toUpperCase();
if(upperMethod == "GET"){
//2.1凿渊、請求方式為get時,配置請求參數(shù)缚柳,并發(fā)送請求
xhr.open(upperMethod,url+"?"+data,true);? //"?"為參數(shù)鏈接符
xhr.send(null);? //最好寫null埃脏,不寫也可以
}else if(upperMethod == "POST"){
//2.2、請求方式為post時秋忙,配置請求參數(shù)彩掐,并發(fā)送請求
xhr.open(upperMethod,url,true);
xhr.send(data);
}else{
//2.3、如果傳入的請求方式不是get或post灰追,則打印錯誤堵幽,并關閉函數(shù)的執(zhí)行
console.error("請求參數(shù)錯誤,必須是get或post");
return;
}
//3弹澎、監(jiān)聽服務器響應朴下,根據(jù)服務器傳回來的信息執(zhí)行不同的調用函數(shù)
xhr.onreadystatechange = function(){
if(xhr.readyState == 4 && xhr.status == 200){
successFn(xhr.responseText)//如果服務器是xml文件,則是xhr.responseXML
}else if(xhr.readyState == 4){
fialFn("請求出錯")
}
}
}