先不講ajax是什麼,我們來講講ajax的好得,就像使用者註冊提前提示使用者是否註冊了,這個不既可以減少使用者的時間,更好的體現的使用者體驗,就一種面傳統型應用程式的感覺,下面來看看什麼是ajax 吧.
xmlhttp_request = new XMLHttpRequest();
xmlhttp_request.overrideMimeType('text/xml');
在實際應用中,為了相容多種不同版本的瀏覽器,一般將建立XMLHttpRequest類的方法寫成如下形式:
try{
if( window.ActiveXObject ){
for( var i = 5; i; i-- ){
try{
if( i == 2 ){
xmlhttp_request = new ActiveXObject( "Microsoft.XMLHTTP" ); }
else{
xmlhttp_request = new ActiveXObject( "Msxml2.XMLHTTP." + i + ".0" );
xmlhttp_request.setRequestHeader("Content-Type","text/xml");
xmlhttp_request.setRequestHeader("Content-Type","gb2312"); }
break;}
catch(e){
xmlhttp_request = false; } } }
else if( window.XMLHttpRequest )
{ xmlhttp_request = new XMLHttpRequest();
if (xmlhttp_request.overrideMimeType)
{ xmlhttp_request.overrideMimeType('text/xml'); } } }
catch(e){ xmlhttp_request = false; }
下面進行發送,
xmlhttp_request.open('GET', URL, true);
xmlhttp_request.send(null);
用JavaScript來建立XMLHttpRequest 類向伺服器發送一個HTTP請求後,接下來要決定當收到伺服器的響應後,需要做什麼。這需要告訴HTTP請求對象用哪一個JavaScript函數處理這個響應。可以將對象的onreadystatechange屬性設定為要使用的JavaScript的函數名,如下所示:
xmlhttp_request.onreadystatechange =FunctionName;
FunctionName是用JavaScript建立的函數名,注意不要寫成FunctionName(),當然我們也可以直接將JavaScript代碼建立在onreadystatechange之後,例如:
xmlhttp_request.onreadystatechange = function(){
// JavaScript程式碼片段
};
首先要檢查請求的狀態。只有當一個完整的伺服器響應已經收到了,函數才可以處理該響應。XMLHttpRequest 提供了readyState屬性來對伺服器響應進行判斷。
readyState的取值如下:
0 (未初始化)
1 (正在裝載)
2 (裝載完畢)
3 (互動中)
4 (完成)
所以只有當readyState=4時,一個完整的伺服器響應已經收到了,函數才可以處理該響應。具體代碼如下:
if (http_request.readyState == 4) { // 收到完整的伺服器響應 }
else { // 沒有收到完整的伺服器響應 }
當readyState=4時,一個完整的伺服器響應已經收到了,接著,函數會檢查HTTP伺服器響應的狀態值。完整的狀態取值可參見W3C文檔。當HTTP伺服器響應的值為200時,表示狀態正常。
在檢查完請求的狀態值和響應的HTTP狀態值後,就可以處理從伺服器得到的資料了。有兩種方式可以得到這些資料:
Ajax並不是一種技術。它實際上是幾種已經在各自領域大行其道技術的強強結合。Ajax混合了:
* 基於XHTML/CSS
* 由DOM(Document Object Model)實現動態顯示與互動
* 通過XML和XSLT進行資料交換及處理
* 使用JavaScript整合上述技術
Ajax的全稱是:AsynchronousJavaScript+XML
2.Ajax的定義:
Ajax不是一個技術,它實際上是幾種技術,每種技術都有其獨特這處,合在一起就成了一個功能強大的新技術。
3.Ajax包括:
XHTML和CSS
使用文件物件模型(DocumentObjectModel)作動態顯示和互動
使用XML和XSLT做資料互動和操作
使用XMLHttpRequest進行非同步資料接收
使用JavaScript將它們綁定在一起
Web開發領域的最新時髦術語其實質是“舊貌換新顏”。
Ajax(AsynchronousJavaScriptandXML)是結合了Java技術、XML以及JavaScript等編程技術,可以讓開發人員構建基於Java技術的Web應用,並打破了使用頁面重載的慣例。
Ajax是使用用戶端指令碼與Web伺服器交換資料的Web應用開發方法。這樣,Web頁面不用打斷互動流程進行重新加裁,就可以動態地更新。使用Ajax,使用者可以建立接近本地案頭應用的直接、高可用、更豐富、更動態Web使用者介面。
非同步JavaScript和XML(AJAX)不是什麼新技術,而是指這樣一種方法:使用幾種現有技術——包括階層式樣式表(CSS)、JavaScript、XHTML、XML和可擴充樣式語言轉換(XSLT),開發外觀及操作類似案頭軟體的Web應用軟體。實現Ajax的所有組件都已存在了許多年。AdaptivePath的使用者體驗戰略部門主管兼創辦合伙人JesseJamesGarrett今年2月發表在AdaptivePath網站上的一篇文章中杜撰了這個術語。
非同步這個詞是指AJAX應用軟體與主機伺服器進行聯絡的方式。如果使用舊模式,每當使用者執行某種操作、向伺服器請求獲得新資料,Web瀏覽器就會更新當前視窗。
如果使用AJAX的非同步模式,瀏覽器就不必等使用者請求操作,也不必更新整個視窗就可以顯示新擷取的資料。只要來回傳送採用XML格式的資料,在瀏覽器裡面啟動並執行JavaScript代碼就可以與伺服器進行聯絡。JavaScript代碼還可以把樣式表加到檢索到的資料上,然後在現有網頁的某個部分加以顯示。
在面向消費者的諸多應用當中,Google的Gmail和GoogleMaps就是最常見的例子。在Gmail當中,AJAX負責如何開啟線程會話,以顯示不同郵件的常值內容。而在Maps當中,AJAX允許使用者以一種似乎無縫的方式拖拉及滾動地圖。
還有雅虎的Flickr像片共用應用和亞馬遜網站的A9搜尋引擎。另外,雅虎新的Web郵件服務可能很快就會吸引AJAX支援者的莫大關注,這項服務基於雅虎收購Oddpost後得到的技術。
這些UI都充分地使用了後台通道,也被一些開發人員稱為“Web2.0”,並導致了大家對Ajax應用興趣的猛漲。
然而,AJAX應用軟體廠商越來越把目光瞄準了企業。譬如說,Scalix的WebAccess電子郵件應用軟體其實比微軟Outlook自己的Web郵件介面更像Outlook。
不過AJAX應用軟體的適用領域具有一定的局限性。因為它們利用了一些最新的Web技術,所以只能在某些Web瀏覽器裡面運行——不過AJAX適用的瀏覽器正越來越多。
Ajax
Ajax,非同步JavaScript與XML,是使用用戶端指令碼與Web伺服器交換資料的Web應用開發方法。這樣,Web頁面不用打斷互動流程進行重新加裁,就可以動態地更新。使用Ajax,你可以建立接近本地案頭應用的,直接的、高可用的、更豐富的、更動態Web使用者介面介面。
Ajax處理過程
一個Ajax互動從一個稱為XMLHttpRequest的JavaScript對象開始。如同名字所暗示的,它允許一個用戶端指令碼來執行HTTP請求,並且將會解析一個XML格式的伺服器響應。Ajax處理過程中的第一步是建立一個XMLHttpRequest執行個體。使用HTTP方法(GET或POST)來處理請求,並將目標URL設定到XMLHttpRequest對象上。
現在,記住Ajax如何首先處於非同步處理狀態?當你發送HTTP請求,你不希望瀏覽器掛起並等待伺服器的響應,取而代之的是,你希望通過頁面繼續響應使用者的介面互動,並在伺服器響應真正到達後處理它們。要完成它,你可以向XMLHttpRequest註冊一個回呼函數,並非同步地派發XMLHttpRequest請求。控制權馬上就被返回到瀏覽器,當伺服器響應到達時,回呼函數將會被調用。
在JavaWeb伺服器上,到達的請求與任何其它HttpServletRequest一樣。在解析請求參數後,servlet執行必需的應用邏輯,將響應序列化到XML中,並將它寫回HttpServletResponse。
一個Ajax互動從一個稱為XMLHttpRequest的JavaScript對象開始。如同名字所暗示的,它允許一個用戶端指令碼來執行HTTP請求,並且將會解析一個XML格式的伺服器響應。Ajax處理過程中的第一步是建立一個XMLHttpRequest執行個體。使用HTTP方法(GET或POST)來處理請求,並將目標URL設定到XMLHttpRequest對象上。
現在,記住Ajax如何首先處於非同步處理狀態?當你發送HTTP請求,你不希望瀏覽器掛起並等待伺服器的響應,取而代之的是,你希望通過頁面繼續響應使用者的介面互動,並在伺服器響應真正到達後處理它們。要完成它,你可以向XMLHttpRequest註冊一個回呼函數,並非同步地派發XMLHttpRequest請求。控制權馬上就被返回到瀏覽器,當伺服器響應到達時,回呼函數將會被調用。
在JavaWeb伺服器上,到達的請求與任何其它HttpServletRequest一樣。在解析請求參數後,servlet執行必需的應用邏輯,將響應序列化到XML中,並將它寫回HttpServletResponse。
一個Ajax互動從一個稱為XMLHttpRequest的JavaScript對象開始。如同名字所暗示的,它允許一個用戶端指令碼來執行HTTP請求,並且將會解析一個XML格式的伺服器響應。Ajax處理過程中的第一步是建立一個XMLHttpRequest執行個體。使用HTTP方法(GET或POST)來處理請求,並將目標URL設定到XMLHttpRequest對象上。
現在,記住Ajax如何首先處於非同步處理狀態?當你發送HTTP請求,你不希望瀏覽器掛起並等待伺服器的響應,取而代之的是,你希望通過頁面繼續響應使用者的介面互動,並在伺服器響應真正到達後處理它們。要完成它,你可以向XMLHttpRequest註冊一個回呼函數,並非同步地派發XMLHttpRequest請求。控制權馬上就被返回到瀏覽器,當伺服器響應到達時,回呼函數將會被調用。
在JavaWeb伺服器上,到達的請求與任何其它HttpServletRequest一樣。在解析請求參數後,servlet執行必需的應用邏輯,將響應序列化到XML中,並將它寫回HttpServletResponse。