1.簡單介紹
- 在無須重新加載整個頁面的情況下卤恳,能夠更新部分網(wǎng)頁的技術(shù)
2.一般步驟
- 創(chuàng)建ajax對象
var xhr = new XMLHttpRequest();
- 指定回調(diào)函數(shù)
xhr.onreadystatechange = function(){
// 通信成功時滚朵,狀態(tài)值為4
if (xhr.readyState === 4){
if (xhr.status === 200){
console.log(xhr.responseText);
} else {
console.error(xhr.statusText);
}
}
};
xhr.onerror = function (e) {
console.error(xhr.statusText);
};
- 發(fā)出HTTP請求
xhr.open('GET', '/endpoint', true);
xhr.send(null);
- 接收服務(wù)器傳回的數(shù)據(jù)
- 更新網(wǎng)頁數(shù)據(jù)
3.同源網(wǎng)址
- 協(xié)議纫谅,域名,端口都相同的網(wǎng)址
4.post請求
- 通常用于向服務(wù)器發(fā)送應(yīng)該被保存的數(shù)據(jù)
- 可以包含非常多尚未數(shù)據(jù)塔嬉,而且格式不限
- post請求消耗的資源更多愉耙,get請求的速度更快
5.readyState狀態(tài)
只讀,表示請求當(dāng)前所處的狀態(tài)
0:未初始化结澄,尚未調(diào)用open()方法
1:啟動,已經(jīng)調(diào)用open()方法岸夯,但尚未調(diào)用send()方法
2:發(fā)送麻献,已經(jīng)調(diào)用send()方法,但尚未接收到響應(yīng)
3:接收猜扮,已經(jīng)接收到部分響應(yīng)數(shù)據(jù)
4:完成勉吻,已經(jīng)接收到全部響應(yīng)數(shù)據(jù)
6.status狀態(tài)碼
只讀,表示本次請求所得到的HTTP狀態(tài)碼
200, OK旅赢,訪問正常
301, Moved Permanently齿桃,永久移動
302, Move temporarily,暫時移動
304, Not Modified鲜漩,未修改
307, Temporary Redirect源譬,暫時重定向
401, Unauthorized,未授權(quán)
403, Forbidden孕似,禁止訪問
404, Not Found踩娘,未發(fā)現(xiàn)指定網(wǎng)址
500, Internal Server Error,服務(wù)器發(fā)生錯誤
7.jsonp跨域
- 由回調(diào)函數(shù)和數(shù)據(jù)兩部分組成
- 通過動態(tài) script 元素來使用
8.Web Sockets
- 全雙工喉祭,雙向通信
9.安全問題
- sql注入:通過把SQL命令插入到Web表單遞交或輸入域名或頁面請求的查詢字符串养渴,最終達(dá)到欺騙服務(wù)器執(zhí)行惡意的SQL命令。
- XSS攻擊:指的是攻擊者往Web頁面里插入惡意html標(biāo)簽或者javascript代碼泛烙。
- CSRF:跨站請求偽造