js 原生ajax的封裝

概念

ajax是前端常用技術,今天用原生js封裝了一個ajax函數,類似于jquery庫的$.ajax()函數,大家如果對jquery的ajax函數原理不太理解,可以參考這篇。

定義

var ajax=window.XMLHttpRequest? new XMLHttpRequest:new ActiveXObject("Microsoft.XMLHTTP");

方法

1.open(method url async) 定義請求的方式 數據 同步異步
2.send(data) 發送數據
3.setsetRequestHeader() 設置請求頭部

事件

onreadystatechange 服務端對請求的響應

屬性

1.readyState 服務器對請求的處理進度
2.status 服務器對請求的響應
3.responseXML 獲得字符串形式的響應數據
4.responseText 獲得 XML 形式的響應數據

封裝函數

       var param = {
                    url:"response.json", 
                    data:{"user":"wang","pswd": "123"},
                    type:"get",
                    dataType:"json",
                    success:function(data){console.log(data)},
                    error:function(){} }
function ajaxsend(obj){
var ajax=window.XMLHttpRequest    ///創建ajax對象
var url = obj.url; 
var type = obj.type;
var dataType = obj.dataType;
var data ="";                       
for(i in obj.data){
    data="&"+i+"="+obj.data[i]
    }
data.replace("&","");                   ///處理傳送數據的data格式
if(type == "get"){
    ajax.open("GET",url+"?"+data,true); ///發送數據
    ajax.send(null);
}else if(type == "post"){
    ajax.open("POST",url,true);
    ajax.setRequestHeader("Content-Type","application/x-www-form-urlencoded") ;
    ajax.send(data);
    }//發送數據之后 ,我們需要監聽服務器返回的數據 
ajax.onreadystatechange = function(){
    if(ajax.readyState == 4 ){
        console.log(ajax.status)
        if(ajax.status ===200 ){
            var result = JSON.parse(ajax.responseText);
            obj.success.call(this,result);
            obj.success(result);
                }else if(ajax.status ===404){
                    console.log("頁面未找到")
                }   
            }else{
                console.log(ajax.readyState);
            }
        }
    }
ajaxsend(param);
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容