封裝一個屬於自己的 Ajax 函式
阿新 • • 發佈:2021-09-28
封裝屬於自己的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() 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 }