如何封裝JS原生ajax函式
阿新 • • 發佈:2019-02-08
首先我們要明白ajax的原理和使用步驟
ajax是我們與後臺連線使用的一個文件,主要分為四步,有三步是我們前端工作人員去完成的,
第一步是建立ajax的物件,第二部是傳送請求到後臺,第三步是後臺所編寫的資料,第四步是我們收到後臺返回資料的處理,第四步返回的格式經常的有xml和json還有字串;
封裝ajax的函式是為了我們以後工作方便使用,以後直接呼叫就可以的了;
主要有四個引數,(‘get或post’,‘後臺做連線的檔案路徑’,send()資料,第四步接受後臺返回的值函式)
首先是第一步建立物件,
-
if(window.XMLHttpRequest){
-
xhr=newXMLHttpRequest
-
}
-
else{
-
xhr=newActiveXObject('Microsoft.XMLHTTP'); 這步是做ie6的相容
-
}
-
if(method=='GET'&& data){
-
//如果是get方式,並且有data:傳資料到伺服器
-
url=url+'?'+data;
-
傳送方式有兩種,‘get'和'post'
-
} 如果用get方式傳送就不用send()資料,如果用psot方式傳送就需要send()資料
-
xhr.open(method,url,true);
-
if(method=='GET'){
-
xhr.send
-
}
-
else{
-
xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
-
xhr.send(data);
-
}
-
最後是第四步;接受後臺返回的值;
-
-
xhr.onreadystatechange=function(){
-
if(xhr.readyState==4){
-
if(xhr.status==200){
-
if(fnsuccess){
-
fnsuccess(xhr.responseText);//注意這裡只能接收字串,json和html資料。如果傳過來的是xml資料格式,要換用responseXML屬性
-
}
-
}
-
else{
-
alert('出差了,出錯狀態是:'+xhr.status);
-
}
-
}
-
-
-
function ajax(method,url,data,fnsuccess){
-
//1號線:建立ajax物件
-
var xhr;
-
if(window.XMLHttpRequest){
-
xhr=newXMLHttpRequest();
-
}
-
else{
-
xhr=newActiveXObject('Microsoft.XMLHTTP');
-
}
-
//2號線:傳送http請求(準備資料,真正的傳送)
-
if(method=='GET'&& data){
-
//如果是get方式,並且有data:傳資料到伺服器
-
url=url+'?'+data;
-
}
-
xhr.open(method,url,true);
-
if(method=='GET'){
-
xhr.send(null);
-
}
-
else{
-
xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
-
xhr.send(data);
-
}
-
//4號線:拿到的資料返回給呼叫ajax函式的地方
-
xhr.onreadystatechange=function(){
-
if(xhr.readyState==4){
-
if(xhr.status==200){
-
if(fnsuccess){
-
fnsuccess(xhr.responseText);//注意這裡只能接收字串,json和html資料。如果傳過來的是xml資料格式,要換用responseXML屬性
-
}
-
}
-
else{
-
alert('出差了,出錯狀態是:'+xhr.status);
-
}
-
}
-
}
-
}
-