AJAX 簡介
AJAX 是一種在無需重新加載整個網(wǎng)頁的情況下,能夠更新部分網(wǎng)頁的技術(shù)。
AJAX 是?Asynchronous?JavaScript?And?XML 的首字母縮寫。
AJAX 并不是一種新的編程語言,而僅僅是一種新的技術(shù),它可以創(chuàng)建更好、更快且交互性更強的 web 應用程序。
AJAX 使用 JavaScript 在 web 瀏覽器與 web 服務器之間來發(fā)送和接收數(shù)據(jù)。
AJAX 通過在后臺與服務器進行少量數(shù)據(jù)交換,使網(wǎng)頁實現(xiàn)異步更新。這意味著可以在不重載整個頁面的情況下,對網(wǎng)頁的某些部分進行更新。
傳統(tǒng)的網(wǎng)頁(不使用 AJAX)如果需要更新內(nèi)容,必須重載整個頁面。
AJAX 如何工作
AJAX 基于因特網(wǎng)標準
AJAX 基于因特網(wǎng)標準,并使用以下技術(shù)組合:
· ? XMLHttpRequest 對象(與服務器異步交互數(shù)據(jù))
· ? JavaScript/DOM(顯示/取回信息)
· ? CSS(設(shè)置數(shù)據(jù)的樣式)
· ? XML(常用作數(shù)據(jù)傳輸?shù)母袷剑?/p>
?AJAX 應用程序與瀏覽器和平臺無關(guān)的!
谷歌搜索建議(Google Suggest)
隨著谷歌搜索建議功能在 2005 的發(fā)布,AJAX 開始流行起來。
谷歌搜索建議(Google Suggest)?使用 AJAX 創(chuàng)造出動態(tài)性極強的 web 界面:當您在谷歌的搜索框中鍵入內(nèi)容時,JavaScript 會把字符發(fā)送到服務器,服務器則會返回建議列表。
XMLHttpRequest 對象使 AJAX 成為可能。
XMLHttpRequest
XMLHttpRequest 對象是 AJAX 的關(guān)鍵。
該對象在 Internet Explorer 5.5 與 2000 年 7 月發(fā)布之后就已經(jīng)可用了,但是在 2005 人們開始討論 AJAX 和 Web 2.0 之前,這個對象并沒有得到充分的認識。
創(chuàng)建 XMLHttpRequest 對象
不同的瀏覽器使用不同的方法來創(chuàng)建?XMLHttpRequest?對象。
Internet Explorer 使用?ActiveXObject。
其他瀏覽器使用名為?XMLHttpRequest?的 JavaScript 內(nèi)建對象。
要克服這個問題,可以使用這段簡單的代碼:
var XMLHttp=null
if (window.XMLHttpRequest)
{
??? XMLHttp=new XMLHttpRequest()
}
else if (window.ActiveXObject)
{
??? XMLHttp=new ActiveXObject("Microsoft.XMLHTTP")
}
代碼解釋:
1.?? 首先創(chuàng)建一個作為 XMLHttpRequest 對象使用的?XMLHttp?變量。把它的值設(shè)置為 null。
2.?? 然后測試?window.XMLHttpRequest?對象是否可用。在新版本的 Firefox, Mozilla, Opera 以及 Safari 瀏覽器中,該對象是可用的。
3.?? 如果可用,則用它創(chuàng)建一個新對象:XMLHttp=new XMLHttpRequest()
4.?? 如果不可用,則檢測?window.ActiveXObject?是否可用。在 Internet Explorer version 5.5 及更高的版本中,該對象是可用的。
5.?? 如果可用,使用它來創(chuàng)建一個新對象:XMLHttp=new ActiveXObject()
改進的例子
一些程序員喜歡使用最新最快的版本的 XMLHttpRequest 對象。
下面的例子試圖加載微軟最新版本的 "Msxml2.XMLHTTP",在 Internet Explorer 6 中可用,如果無法加載,則后退到 "Microsoft.XMLHTTP",在 Internet Explorer 5.5 及
其后版本中可用。
function GetXmlHttpObject()
{
??? var xmlHttp=null;
??? try
??? {
??????? // Firefox, Opera 8.0+, Safari
??????? xmlHttp=new XMLHttpRequest();
??? }
??? catch (e)
??? {
??????? // Internet Explorer
??????? try
??????? {
??????????? xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
??????? }
??????? catch (e)
??????? {
??????????? xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
??????? }
??? }
??? return xmlHttp;
}
代碼解釋:
1.?? 首先創(chuàng)建用作 XMLHttpRequest 對象的?XMLHttp?變量。把它的值設(shè)置為 null。
2.?? 按照 web 標準創(chuàng)建對象 (Mozilla, Opera 以及 Safari):XMLHttp=new XMLHttpRequest()
3.?? 按照微軟的方式創(chuàng)建對象,在 Internet Explorer 6 及更高的版本可用:XMLHttp=new ActiveXObject("Msxml2.XMLHTTP")
4.??? 如果捕獲錯誤,則嘗試更老的方法 (Internet Explorer 5.5) :XMLHttp=new ActiveXObject("Microsoft.XMLHTTP")? ??
今天就開始使用 AJAX
在我們的 PHP 教程中,我們將演示 AJAX 如何在不重載整個頁面的情況下對網(wǎng)頁的某些部分進行更新。服務器腳本我們將采用 PHP 來編寫。
如果您想要學習更多關(guān)于 AJAX 的知識,請訪問我們的?AJAX 教程。