通常當JavaScript向服務器發送獲取數據的請求時,服務器會返回數據。在不使用AJAX的傳統網頁中,需要刷新頁面才能重新加載。另壹方面,AJAX可以讓網頁更新部分內容,而無需重新加載。(比如妳要放大地圖,妳會不斷向服務器索取地圖當前位置的詳細信息,服務器會把數據返回給妳。我們不需要在這裏重新加載整個頁面,否則用戶體驗會太差。相反,在本地更新頁面。)
因為我在這裏寫不出地圖這麽復雜的例子,為了演示AJAX的使用,我借用了壹個簡單的Secondology的例子:
//簡單的AJAX例子。
// 1:創建請求變量
var myRequest
//瀏覽器功能檢查。
如果(窗口。XMLHttpRequest) {//如果支持,是火狐、谷歌等瀏覽器。
my request = new XMLHttpRequest();
} else if(窗口。ActiveX object){//如果不支持,就是IE瀏覽器。
my request = new ActiveX object(" Microsoft。XMLHTTP”);
}
// 2:為請求添加事件處理代碼。
my request . onreadystatechange = function(){
Console.log("調用了匿名函數!");
console . log(my request . ready state);
if (myRequest.readyState === 4) {
var p = document . createelement(" p ");
var t = document . create text node(my request . responsetext);
闌尾原蟲病;
document . getelementbyid(" main content ")。appendChild(p);
}
};
// 3:配置發送請求
myRequest.open('GET ',' simple.txt ',true);
myRequest.send(空);
// ....
使用AJAX主要分為三個部分,如示例中所示。
1.創建請求的變量。
在腳本文件中,首先聲明XMLHttpRequest對象,這也是題目提到的Ajax的核心。瀏覽器頁面可以通過XMLHttpRequest對象與服務器通信。因為該對象的創建因瀏覽器而異。所以我們需要用if語句來判斷XMLHttpRequest是否存在。
2.為請求添加事件處理代碼。
創建XMLHttpRequest對象後,您可以將請求發送到服務器,但首先我們將處理服務器響應的事件。當服務器響應時,myRequest對象的onreadystatechange事件將被觸發。
在onreadyStatechange事件中,我們看到myRequest調用了readyState屬性,readystate有四個值表示當前的響應階段,每個值如下:
L 1:請求已建立,但未發送(send()未調用)。
請求已經發出,正在處理中(通常妳現在可以從響應中得到內容頭)。
L 3:請求正在處理中;通常響應中有壹些數據,但是服務器還沒有完成響應的生成。
L 4:響應已完成;您可以獲得並使用來自服務器的響應。
壹般我們只關心readyState的值為4的情況,表示響應已經完成。
3.配置發送請求
使用open方法來配置請求。它有三個參數:
1,第壹個參數的意思是用GET獲取服務器中的數據。
2、第二個參數是壹個服務器地址,這裏我們用本地的simple.txt代替,省去創建服務器的麻煩。
3.第三個參數true表示請求是異步的,也就是當請求發出後,JavaScript不會為了等待服務器的響應而阻塞,它會繼續執行後續的代碼。
配置請求後,使用send方法發送請求。傳遞到此處發送的參數為空。如果有其他參數要發送,也可以傳遞給send方法。