AJAX封裝
function ajax(obj){
//1.創(chuàng)建ajax對(duì)象
var xhr
if(window.XMLHttpRequest){ 支持此對(duì)象
xhr=new XMLHttpRequest() //IE7以上瀏覽器
}else{
xhr=new ActiveXObject("Microsoft.XMLHTTP") //只有IE6支持此對(duì)象
}
//2.打開(kāi)請(qǐng)求
//第一個(gè)參數(shù)表示請(qǐng)求方式,值為get/post,是字符串
//第二個(gè)參數(shù)表示請(qǐng)求的地址
//第三個(gè)參數(shù)是布爾值,默認(rèn)是true表示異步,false表示同步
xhr.open(obj.type,obj.url,obj.async)
//3.判斷請(qǐng)求方式get/post补疑,發(fā)送數(shù)據(jù)(post方式必須發(fā)送請(qǐng)求頭)
if(obj.type.toLowerCase()=="get"){
xhr.send()
}else if(obj.type.toLowerCase()=="post"){
xhr.setRequestHeader("Content-type","application/x-www-form-urlencoded") //設(shè)置請(qǐng)求頭
xhr.send(toUrl(obj.data))//name=1&name2=2
}
//4.操作返回的數(shù)據(jù)
xhr.onreadystatechange=function(){
if(xhr.readyState==4 && xhr.status==200){
//1.readyState屬性:ajax工作狀態(tài)
//2.每當(dāng)readyState的值發(fā)生改變時(shí),就會(huì)觸發(fā) onreadystatechange事件
//存有XMLHttpRequest的狀態(tài).從0-4發(fā)生變化
//0:請(qǐng)求未初始化
//1:服務(wù)器連接已建立
//2:請(qǐng)求已接收
//3:請(qǐng)求處理中
//4:請(qǐng)求已完成,且響應(yīng)已就緒
//http狀態(tài)碼
//200代表請(qǐng)求成功
//403禁止訪(fǎng)問(wèn)
//404文件未找到
//500服務(wù)器錯(cuò)誤
//對(duì)responseText進(jìn)行json轉(zhuǎn)化
var data=JSON.parse(xhr.responseText)
//把轉(zhuǎn)化好的數(shù)據(jù)當(dāng)做參數(shù)返回給obj.success函數(shù)
obj.success(data)
}
}
//對(duì)obj.data進(jìn)行轉(zhuǎn)化殿遂,把對(duì)象轉(zhuǎn)化成url形式
function toUrl(obj){
var arr=[]
for(var i in obj){
arr.push(i+"="+obj[i])
}
return arr.join("&")
}
}
ajax調(diào)用
ajax({
type:"post或者get",
url:"地址",
//加post的話(huà)用到data
//get的話(huà)直接用&拼接
data:{
key:"c0bf48603646fc9a7c831342cb34a9b,
},
async:true,
success:function(res){
console.log(res);
}
})
//直接返回調(diào)用的對(duì)象
//請(qǐng)求方式type用get/post
//get方式直接拼接key必選項(xiàng)
//post方式直接傳入data對(duì)象再設(shè)置key必選項(xiàng)