AJAX:async(異步) JavaScript and XML(JSON)
簡(jiǎn)單一句話AJAX就是用JS發(fā)送請(qǐng)求和收響應(yīng)
AJAX是瀏覽器上的功能:
- 瀏覽器可以發(fā)請(qǐng)求解恰,收響應(yīng)
- 瀏覽器在window上加了一個(gè)XMLHttpRequest函數(shù)
- 用這個(gè)構(gòu)造函數(shù)(類)可以構(gòu)造出一個(gè)對(duì)象,window.XMLHttpRequest是用來創(chuàng)建XMLRequest對(duì)象的
- JS通過它實(shí)現(xiàn)發(fā)請(qǐng)求,收響應(yīng)
一共四行
1芒粹、創(chuàng)建對(duì)象
2脐恩、設(shè)置請(qǐng)求方式和路徑
3、發(fā)送消息體
4搀继、監(jiān)聽onreadystatechange事件,在readyState為4且狀態(tài)碼為200和300之間(包含200)或304時(shí)調(diào)用成功回調(diào)否則調(diào)用失敗回調(diào)翠语。
var xhr = new XMLHttpRequest()
//第一個(gè)參數(shù)請(qǐng)求方法叽躯,第二個(gè)請(qǐng)求路徑,第三個(gè)同步還是異步(AJAX只用異步的)肌括,默認(rèn)異步即可点骑。
xhr.open('GET','/xxx',)
//成功之后要有一個(gè)回調(diào)
//但是一般他們想讓你寫這個(gè)函數(shù),準(zhǔn)備狀態(tài)變化
xhr.onreadystatechange = function(){
if(xhr.readyState === 4){ //1234各有不同的涵義 之前筆記有 mdn readyState也可
if(request.status>=200 && request.status<300||request.status === 304){//304表示內(nèi)容沒有更改
success(xhr) //success是你定義好的回調(diào)
} else{
fail(xhr)
}
}
}
//請(qǐng)求體(GET 請(qǐng)求體空的(就算你寫了也不會(huì)發(fā)送) POST 傳一個(gè)JSON數(shù)據(jù))
xhr.send('{"name":"frank"}')