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