定義:JavaScript 腳本發(fā)起 HTTP 通信(腳本發(fā)起通信)
步驟:
1.創(chuàng)建 XMLHttpRequest 實例
2.發(fā)出 HTTP 請求
3.接收服務(wù)器傳回的數(shù)據(jù)
4.更新網(wǎng)頁數(shù)據(jù)
XMLHttpRequest 實例
XMLHttpRequest對象是 AJAX 的主要接口尼斧,用于瀏覽器與服務(wù)器之間的通信枉圃。盡管名字里面有XML和Http野崇,它實際上可以使用多種協(xié)議(比如file或ftp),發(fā)送任何格式的數(shù)據(jù)(包括字符串和二進(jìn)制)静檬。
XMLHttpRequest本身是一個構(gòu)造函數(shù),可以使用new命令生成實例樱调。它沒有任何參數(shù)
var xhr = new XMLHttpRequest();
xhr.open('GET', 'http://www.example.com/page.php', true);
一旦新建實例洪己,就可以使用open()方法初始化 HTTP 請求頭。
指定回調(diào)函數(shù)蠢棱,監(jiān)聽通信狀態(tài)(readyState屬性)的變化
xhr.onreadystatechange = handleStateChange;
function handleStateChange() {
// ...
}
readystate為4時表示锌杀,響應(yīng)體已經(jīng)下載成功
button.addEventListener('click', function () {
var request = new XMLHttpRequest
request.open('GET', 'url', true);//http方法
request.send()
request.onreadystatechange=()=>{console.log(request.onreadystate)}
//當(dāng)前所處的狀態(tài)改變一旦回調(diào)函數(shù)甩栈,
//當(dāng)狀態(tài)變?yōu)?的時候,即響應(yīng)完畢請求體下載成功糕再,
//這時回調(diào)函數(shù)就可以處理服務(wù)器傳送回來的數(shù)據(jù)量没。
}
- 設(shè)置一個狀態(tài)(如button的 click)
- 創(chuàng)建XMLHttpRequest對象
3 初始化 XMLHttpRequest.open('method',''url',true)
4 XMLHttpRequest.send()發(fā)送請求 - 可以通過onReadyStateChange屬性,指定這個事件的監(jiān)聽函數(shù)突想,對不同狀態(tài)進(jìn)行不同處理殴蹄。
request.onreadystatechange=()=>{
if(request.status>=200&&request.status<=300){
let string = request.responseText
let object = window.JSON.parse(string)
console.log('object.note.from')
}
下面的例子:
假設(shè)服務(wù)器返回的是JSON字符串
把從服務(wù)器接收到的符合JSON語法的字符串轉(zhuǎn)換成js中的數(shù)據(jù)類型,讓js能夠調(diào)用猾担。后端返回的只能是字符串
比如返回的是
{
"note":{
"from":"z",
"to":"f"
}
}