DIV CSS 佈局教程網

 DIV+CSS佈局教程網 >> 網頁腳本 >> JavaScript入門知識 >> AJAX入門 >> AJAX詳解 >> 解析Ajax如何處理響應信息
解析Ajax如何處理響應信息
編輯:AJAX詳解     
 

戶的交互操作(interaction)驅動著Web站點。理解如何處理響應信息,特別是在使用新的交互操作形式(例如AJAX)的時候,這一點非常重要的。Kris Hadloc解釋了AJax請求-響應過程的本質,你應該了解這些內容,更好地為用戶交互操作服務。

請求和響應

AJAX引擎分很多個方面,每個方面都很重要。如果引擎執行發送請求和接收響應信息的事務,那麼它就有很多的處理響應信息的方法。響應信息是處理過程中的一個重要的部分,這是因為用戶最終會與響應信息交互操作。本文詳細解釋了如何處理AJax響應信息,並為用戶提供反饋信息,根據需要進行更新。我們從請求的就緒狀態開始,接著解釋響應信息的狀態、回調(callback)和分析響應信息。本文還解釋了響應信息的其它一些方面,例如加載消息、錯誤處理和顯示響應信息。

我建立了一個示例可供大家下載。這個示例包含了一個面向對象的AJAX引擎,你可以在任何AJAX應用程序中再次使用它。在討論響應信息之前,我要指出如何建立AJAX引擎並發出請求。首先,讓我們來看看AJax引擎的代碼(沒有帶上響應信息處理部分):

document.write("");

function AJax()

{

 this.toString = function() { return "AJax"; }

 this.http = new HTTP();

 this.makeRequest = function(_method, _url, _callbackMethod)

 {

this.request = (window.XMLHttpRequest)?

new XMLHttpRequest(): new ActiveXObject("MSXML2.XMLHTTP");

this.request.onreadystatechange = _callbackMethod;

this.request.open(_method, _url, true);

this.request.send(_url);

 }

}

為了建立這個對象並發出請求,你只需要使用下面兩行代碼:

var ajax = new AJax();

AJax.makeRequest('GET', 'xml/content.XML', onResponse);

上面的第二行代碼反映了你選擇的請求方法、XML的路徑或請求的服務器端腳本、當接收到響應信息時你希望調用的回調方法。現在你對AJax引擎和如何發出請求已經有了一定的了解,我們來看看如何處理請求。

就緒(Ready)狀態

就緒狀態由回調方法來處理,當我們做出請求的時候,回調方法就已經設置好了。在例子中,onResponse被設置為回調方法,它在本文中被用於處理所有的分析代碼的操作。我們將使用下面的代碼來檢測回調方法中的AJax對象的就緒狀態:

function onResponse()

{

 if(AJax.checkReadyState('body', 'loading...', 'loading...', 'loading...') == "OK")

 {

// 此處是分析代碼

 }

}

上面的代碼顯示,我們將向checkReadyState方法傳遞四個參數。第一個參數是我們希望顯示的加載(loading)消息div的ID、其它三個參數都是自定義的對應於不同狀態的加載消息。我選擇的用於加載消息的div的名字是body,它使得新數據在被載入的時候,內容和加載消息是合並在一起的。下面是實際的checkReadyState方法,它處理了我們剛才討論的代碼,並在div中向我們傳遞進去的參數來顯示它。這個方法也被包含在示例AJax引擎中了。

this.checkReadyState = function(_id, _1, _2, _3)

{

 switch(this.request.readyState)

 {

case 1:

 document.getElementById(_id).innerHtml = _1;

 break;

case 2:

 document.getElementById(_id).innerHtml = _2;

 break;

case 3:

 document.getElementById(_id).innerHtml = _3;

 break;

case 4:

 document.getElementById(_id).innerHtml = "";

 return this.http.status(this.request.status);

 }

}

checkReadyState方法為用戶提供頁面狀態的反饋信息是有用處的。下表顯示了它檢測的值:

值 狀態 0 Uninitialized(未初始化) 1 Loading(正在載入) 2 Loaded(已經載入) 3 Interactive(交互) 4 Complete(完成)

你可以為每種加載狀態添加一個自定義的消息--它可以是一個簡單的字符串,也可以是字符串格式的圖片標簽(例如顯示一個動畫的加載GIF)。下面就是一個例子:

var loader = "〈IMG src="http://images.51cto.com/wuyou/images/loader.gif"〉";

AJax.checkReadyState('body', loader, loader, loader);

 

不僅checkReadyState方法處理請求狀態,它所包含的HTTP對象也會檢測和返回請求的狀態。

用戶的交互操作(interaction)驅動著Web站點。理解如何處理響應信息,特別是在使用新的交互操作形式(例如AJAX)的時候,這一點非常重要的。Kris Hadloc解釋了AJax請求-響應過程的本質,你應該了解這些內容,更好地為用戶交互操作服務。

請求和響應

AJAX引擎分很多個方面,每個方面都很重要。如果引擎執行發送請求和接收響應信息的事務,那麼它就有很多的處理響應信息的方法。響應信息是處理過程中的一個重要的部分,這是因為用戶最終會與響應信息交互操作。本文詳細解釋了如何處理AJax響應信息,並為用戶提供反饋信息,根據需要進行更新。我們從請求的就緒狀態開始,接著解釋響應信息的狀態、回調(callback)和分析響應信息。本文還解釋了響應信息的其它一些方面,例如加載消息、錯誤處理和顯示響應信息。

我建立了一個示例可供大家下載。這個示例包含了一個面向對象的AJAX引擎,你可以在任何AJAX應用程序中再次使用它。在討論響應信息之前,我要指出如何建立AJAX引擎並發出請求。首先,讓我們來看看AJax引擎的代碼(沒有帶上響應信息處理部分):

document.write("");

function AJax()

{

 this.toString = function() { return "AJax"; }

 this.http = new HTTP();

 this.makeRequest = function(_method, _url, _callbackMethod)

 {

this.request = (window.XMLHttpRequest)? new XMLHttpRequest():

new ActiveXObject("MSXML2.XMLHTTP");

this.request.onreadystatechange = _callbackMethod;

this.request.open(_method, _url, true);

this.request.send(_url);

 }

}

為了建立這個對象並發出請求,你只需要使用下面兩行代碼:

var ajax = new AJax();

AJax.makeRequest('GET', 'xml/content.XML', onResponse);

上面的第二行代碼反映了你選擇的請求方法、XML的路徑或請求的服務器端腳本、當接收到響應信息時你希望調用的回調方法。現在你對AJax引擎和如何發出請求已經有了一定的了解,我們來看看如何處理請求。

就緒(Ready)狀態

就緒狀態由回調方法來處理,當我們做出請求的時候,回調方法就已經設置好了。在例子中,onResponse被設置為回調方法,它在本文中被用於處理所有的分析代碼的操作。我們將使用下面的代碼來檢測回調方法中的AJax對象的就緒狀態:

function onResponse()

{

 if(AJax.checkReadyState('body', 'loading...', 'loading...', 'loading...') == "OK")

 {

// 此處是分析代碼

 }

}

上面的代碼顯示,我們將向checkReadyState方法傳遞四個參數。第一個參數是我們希望顯示的加載(loading)消息div的ID、其它三個參數都是自定義的對應於不同狀態的加載消息。我選擇的用於加載消息的div的名字是body,它使得新數據在被載入的時候,內容和加載消息是合並在一起的。下面是實際的checkReadyState方法,它處理了我們剛才討論的代碼,並在div中向我們傳遞進去的參數來顯示它。這個方法也被包含在示例AJax引擎中了。

this.checkReadyState = function(_id, _1, _2, _3)

{

 switch(this.request.readyState)

 {

case 1:

 document.getElementById(_id).innerHtml = _1;

 break;

case 2:

 document.getElementById(_id).innerHtml = _2;

 break;

case 3:

 document.getElementById(_id).innerHtml = _3;

 break;

case 4:

 document.getElementById(_id).innerHtml = "";

 return this.http.status(this.request.status);

 }

}

checkReadyState方法為用戶提供頁面狀態的反饋信息是有用處的。下表顯示了它檢測的值:

值 狀態 0 Uninitialized(未初始化) 1 Loading(正在載入) 2 Loaded(已經載入) 3 Interactive(交互) 4 Complete(完成)
 

你可以為每種加載狀態添加一個自定義的消息--它可以是一個簡單的字符串,也可以是字符串格式的圖片標簽(例如顯示一個動畫的加載GIF)。下面就是一個例子:

var loader = "〈IMG src="http://images.51cto.com/wuyou/images/loader.gif"〉";

AJax.checkReadyState('body', loader, loader, loader);

不僅checkReadyState方法處理請求狀態,它所包含的HTTP對象也會檢測和返回請求的狀態。

XML學習教程| jQuery入門知識| AJAX入門| Dreamweaver教程| Fireworks入門知識| SEO技巧| SEO優化集錦|
Copyright © DIV+CSS佈局教程網 All Rights Reserved