1. 程式人生 > 其它 >封裝一個屬於自己的 Ajax 函式

封裝一個屬於自己的 Ajax 函式

封裝屬於自己的Ajax思路:

呼叫函式傳參格式是物件type請求方式url請求的URL地址data傳送請求時攜帶的資料success請求成功的回撥函式

1.首先需要把data物件轉換為查詢字串格式 1.1用forin遍歷先把屬性和屬性值用=拼接在一起,然後push到陣列內 1.2迴圈結束後用join('&')方法把陣列拼接為字串 1.3這樣就把data物件轉換為了查詢字串格式 2.接下來例項化XMLHttpRequest 3.用toUpperCase()方法把傳過來的親求方式轉換為大寫然後判斷是哪種請求方式 4.分別呼叫不同方式的xhr.open()xhr.send()xhr.setRequestHeader()
5.最後呼叫xhr.oreadystatechange=function(){ if(xhr.readstate===4&&xhr.status===200){ 5.1經過判斷後把伺服器返回的引數經過反序列化後傳給success函式 } }
 1   function bo(obj) {
 2             // 遍歷物件裡面的 data 屬性 轉換為查詢字串
 3             var data = dordata(obj.data)
 4             // 處理傳過來的資料
 5             function dordata(objdata) {
6 var dataStr = []; 7 for (var k in objdata) { 8 dataStr.push(`${k}=${objdata[k]}`) 9 } 10 // 物件轉換為陣列,再用 array.join('&')方法拼接為字串 11 return dataStr.join('&'); 12 } 13 var
xhr = new XMLHttpRequest(); 14 // 判斷是 get or post 15 if (obj.type.toUpperCase() === 'GET') { 16 xhr.open('GET', `${boj.url}?${data}`) 17 xhr.send(); 18 } else if (obj.type.toUpperCase() === 'POST') { 19 xhr.open('POST', obj.url); 20 xhr.setRequestHeader('Content-Type', 'x-www-form-urlencoded'); 21 xhr.send(data); 22 } 23 // 獲取資料 24 xhr.onreadystatechange = function () { 25 if (xhr.readyState === 4 && xhr.status === 200) { 26 data.success(JSON.parse(xhr.responseText)); 27 } 28 } 29 }