天天看點

原生ajax運作原理,【前端自學之路】JS之原生AJAX原理

Javascript Ajax 原理

什麼是 AJAX

AJAX(Asynchronous JavaScript and XML) 異步Javascript 和 XML

AJAX 是指一種建立動态網頁的開發技術

說白話點:

AJAX 就是允許JS和背景伺服器進行資料互動

AJAX 的原生實作

任何AJAX庫或者架構,都是基于原生的AJAX實作的在這裡我們先忽略相容性問題 ActiveXObject

原生的AJAX實作有四步:

第一步

建立XMLHttpRequest,就可以通過這個對象和伺服器進行互動了IE舊版本1var xh = new ActiveXObject('Microsoft.XMLHTTP');

W3C标準實作1var xhr = new XMLHttpRequest();

第二步

通過 XMLHttpRequest對象的 open方法初始化請求

XMLHttpRequest.open(method, url, async, use, password)method,要使用的HTTP方法,如 GET、POST、PUT 等

url 發送請求的url

asyc [可選] 預設為true表示異步操作,false則為同步操作

user [可選] 預設為null 可選的使用者名用于認證

password [可選] 預設為null 可選的密碼用于認證1xh.open('GET', 'https://www.baidu.com');

第三步

onreadystatechange 監聽請求變化過程

XMLHttpRequest.onreadystatechange = function(){}

隻要readyState屬性變化的時候,就會調用回調處理函數當請求被 abort() 的時候,事件就不會被觸發,事件處理函數也不會被調用1

2

3xhr.onreadystatechange = function (){

// do something when readyState change

};

第四步

正式發送出HTTP請求

XMLHttpRequest.send(DataBuffer)

對于異步請求,這個函數執行後會立馬傳回

對于同步請求,這個函數會等待請求傳回後才傳回

函數接收一個參數,表示要發送的資料1xhr.send('Helloworld');

總結

我們來看完整的AJAX原理步驟1

2

3

4

5

6

7var xhr = new XMLHttpRequest();

xhr.open('GET', 'https://www.shuipingguo.com/2h4g/getvideo/search?kw=%E5%80%9A%E5%A4%A9', true);

xhr.onreadystatechange = function(xhr){

console.log(JSON.parse(xhr.target.response));

};

xhr.send();

在浏覽器控制台上執行結果:1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18data: [

{

author: ""

country: 0

id: 56

img: "http://puui.qpic.cn/qqvideo_ori/0/p0859dffl2v_496_280/0"

imgv: "//puui.qpic.cn/vcover_vt_pic/0/ha7r9z89i9d234y1553076483/220"

max: 50

name: "倚天屠龍記"

number: 50

score: 8

summary: ""

type: 2

url: "//m.v.qq.com/x/cover/h/ha7r9z89i9d234y.html"

vip: 10

},

]

retcode: 0