Asynchronous JavaScript and XML(異步的 JavaScript 和 XML)。
AJAX 不是新的編程語言,而是一種使用現(xiàn)有標(biāo)準(zhǔn)的新方法。
AJAX 是與服務(wù)器交換數(shù)據(jù)并更新部分網(wǎng)頁的藝術(shù),在不重新加載整個頁面的情況下。AJAX可以更新部分頁面,而不需要整個刷新,從而提升用戶體驗。
XMLHttpRequest 對象
是Ajax的核心,所有現(xiàn)代瀏覽器均支持 XMLHttpRequest 對象(IE5 和 IE6 使用 ActiveXObject)。
XMLHttpRequest 用于在后臺與服務(wù)器交換數(shù)據(jù)。這意味著可以在不重新加載整個網(wǎng)頁的情況下,對網(wǎng)頁的某部分進(jìn)行更新。
創(chuàng)建方法:
var xhr = new XMLHttpRequest();
常用方法:
open("GET/POST","URL地址",true/false) 打開連接
true和false代表異步或同步。
同步表示需要等待服務(wù)器響應(yīng)后才能執(zhí)行后面的代碼
異步表示不需要等待服務(wù)器響應(yīng),響應(yīng)后會進(jìn)行通知
推薦使用異步方式。
send(String) 發(fā)送請求
如果是POST方法需要填寫請求參數(shù),如:"name=zhang&age=20"
如果是Get方法參數(shù)可以不寫
onreadystatechange事件回調(diào),監(jiān)聽連接狀態(tài)改變
用法:
onreadystatechange = function(){...};
常用屬性:
readyState 連接狀態(tài)
ajax共有5種狀態(tài):
狀態(tài) | 名稱 | 描述 |
0 | Uninitialized | 初始化狀態(tài)。XMLHttpRequest 對象已創(chuàng)建或已被 abort() 方法重置。 |
1 | Open | open() 方法已調(diào)用,但是 send() 方法未調(diào)用。請求還沒有被發(fā)送。 |
2 | Sent | Send() 方法已調(diào)用,HTTP 請求已發(fā)送到 Web 服務(wù)器。未接收到響應(yīng)。 |
3 | Receiving | 所有響應(yīng)頭部都已經(jīng)接收到。響應(yīng)體開始接收但未完成。 |
4 | Loaded | HTTP 響應(yīng)已經(jīng)完全接收。 |
responseText 服務(wù)器響應(yīng)文本內(nèi)容
status 響應(yīng)碼、如:200、404、500等
案例:使用ajax和Servlet進(jìn)行交互
JQuery中的Ajax函數(shù):
除了原生的Ajax代碼外,JQuery框架也封裝了幾個ajax函數(shù),讓我們能更容易地與服務(wù)器交互。
$.ajax
常用參數(shù):
type 請求方法GET、POST
url 服務(wù)器地址(必須)
data 請求參數(shù)
async 是否異步true,false
success 正常情況調(diào)用函數(shù)
error 錯誤情況調(diào)用函數(shù)
示例:
$.ajax({url:check.do,data:{tel:‘13001112222’},async:true,
success:function(data){
alert(服務(wù)器返回內(nèi)容+data);
},
error:function(){
alert(服務(wù)器操作出現(xiàn)錯誤);
}
});
$.post函數(shù)
以post方式和服務(wù)器交互
$.post("URL地址",{參數(shù)名:值},function(data){
回調(diào)代碼
});
案例:
//使用jquery的post方法
function post(){
$.post("ajax.do",{name:李四},function(data){
$("#div1").text(data);
});
}
$.get 函數(shù)
以get方式和服務(wù)器交互
$.get("URL地址?參數(shù)",function(data){
回調(diào)代碼
});
案例:
//使用jquery的get方法
function get(){
$.get("ajax.do?name=趙六",function(data){
$("#div1").text(data);
});
}
load函數(shù)
使用load方法,將ajax加載的內(nèi)容直接插入到標(biāo)簽中
案例:
$(function(){
$("#div1").click(function(){
//post();
//get();
$("#div1").load("ajax.do?name=馬九");
});
});
應(yīng)用場景:
用戶注冊時檢查用戶名是否存在
需求:用戶注冊時,填寫手機號后,當(dāng)輸入框失去焦點時,對手機號進(jìn)行服務(wù)器驗證后在手機號輸入框后面顯示”用戶名已存在"或"用戶名可以使用";
思路:
1、在input的onblur事件中進(jìn)行驗證
2、通過ajax發(fā)送手機號給后臺Servlet
3、Servlet對手機號進(jìn)行數(shù)據(jù)庫查詢,返回是否存在的文字給ajax
4、ajax收到返回文字后,顯示到標(biāo)簽上
總結(jié):Ajax能夠讓瀏覽器和服務(wù)器進(jìn)行交互,并且在不刷新頁面的情況下對網(wǎng)頁內(nèi)容進(jìn)行更新,大大提高了用戶體驗,通過Ajax技術(shù)能夠構(gòu)建交互性極強的Web應(yīng)用程序。
千鋒??成都Java培訓(xùn)??課程的授課模式采用全程面授,講師成本雖高,但是效果卻是顯著的,和學(xué)員面對面溝通,了解到學(xué)員在學(xué)習(xí)過程中遇到的問題,動態(tài)地調(diào)整授課方式。及時有效地幫助學(xué)員解決疑難問題,提高學(xué)員的學(xué)習(xí)積極性。千鋒java視頻教程為零基礎(chǔ)的學(xué)員提供高品質(zhì)的學(xué)習(xí)資料,讓每一個熱愛編程的學(xué)員可以掌握扎實的基礎(chǔ)。