雖然現(xiàn)在很多JS的框架提供了AJAX的調(diào)用方法,我們甚至不用去了解其具體的實(shí)現(xiàn)原理就可以直接調(diào)用了,但是我認(rèn)為不去從最基礎(chǔ)的層面了解一個(gè)東西,就很難做到最好。
var XHR=null;
if (window.XMLHttpRequest) {
// 非IE內(nèi)核
XHR = new XMLHttpRequest();
} else if (window.ActiveXObject) {
// IE內(nèi)核,這里早期IE的版本寫(xiě)法不同,具體可以查詢下
XHR = new ActiveXObject("Microsoft.XMLHTTP");
} else {
XHR = null;
}
if(XHR){
XHR.open("GET", "ajaxServer.action");
XHR.onreadystatechange = function () {
// readyState值說(shuō)明
// 0,初始化,XHR對(duì)象已經(jīng)創(chuàng)建,還未執(zhí)行open
// 1,載入,已經(jīng)調(diào)用open方法,但是還沒(méi)發(fā)送請(qǐng)求
// 2,載入完成,請(qǐng)求已經(jīng)發(fā)送完成
// 3,交互,可以接收到部分?jǐn)?shù)據(jù)
// status值說(shuō)明
// 200:成功
// 404:沒(méi)有發(fā)現(xiàn)文件、查詢或URl
// 500:服務(wù)器產(chǎn)生內(nèi)部錯(cuò)誤
if (XHR.readyState == 4 XHR.status == 200) {
// 這里可以對(duì)返回的內(nèi)容做處理
// 一般會(huì)返回JSON或XML數(shù)據(jù)格式
console.log(XHR.responseText);
// 主動(dòng)釋放,JS本身也會(huì)回收的
XHR = null;
}
};
XHR.send();
}