日韩天天综合网_野战两个奶头被亲到高潮_亚洲日韩欧美精品综合_av女人天堂污污污_视频一区**字幕无弹窗_国产亚洲欧美小视频_国内性爱精品在线免费视频_国产一级电影在线播放_日韩欧美内地福利_亚洲一二三不卡片区

揭開(kāi)AJAX神秘面紗_AJAX教程

編輯Tag賺U幣
教程Tag:暫無(wú)Tag,歡迎添加,賺取U幣!

推薦:解讀AJAX是否能夠取代桌面應(yīng)用程序
一、 引言 在AJAX是否能夠取代桌面應(yīng)用程序的問(wèn)題上,存在很多爭(zhēng)論。如今,這兩種陣營(yíng)正在逐步形成。在本文中,我的看法是:AJAX不可能取代桌面應(yīng)用程序;但是它將導(dǎo)致一種新型軟件應(yīng)用程序的出現(xiàn)。大多數(shù)AJAX程序應(yīng)該會(huì)是生產(chǎn)工具、協(xié)作和商業(yè)應(yīng)用程序。許

本文通過(guò)一個(gè)簡(jiǎn)單的例子來(lái)說(shuō)明如何在IE6中使用AJAX技術(shù)。在這例子中,客戶端每隔十秒,從服務(wù)器端取回一個(gè)隨機(jī)的字符串,在不重新刷新頁(yè)情況下,自動(dòng)更新部分頁(yè)面內(nèi)容。例子僅用到了兩個(gè)jsp文件,client.jsp及server.jsp。

AJAX,即"Asynchronous JavaScript And XML"的縮寫(xiě),可翻譯為異步JavaScript及XML技術(shù)。其核心是一個(gè)寄宿在瀏覽器中名為XMLHTTPRequest的類。通過(guò)此類,可以做到無(wú)需提交表單就可以實(shí)現(xiàn)與服務(wù)器的連接;無(wú)需刷新整個(gè)頁(yè)面,就可以動(dòng)態(tài)更新頁(yè)面中一部分的內(nèi)容。XMLHTTPRequest通常使用XML作為數(shù)據(jù)交換的載體,但也可使用其他的載體,如純文本。簡(jiǎn)單來(lái)說(shuō),就是通過(guò)XMLHTTPRequest發(fā)送信息給服務(wù)器,異步接收服務(wù)器處理并返回信息,然后通過(guò)JavaScript動(dòng)態(tài)更新頁(yè)面的部分內(nèi)容。

盡管AJAX近來(lái)非�;鸨�,但AJAX并非新的技術(shù),正如其名所示,只不過(guò)是JavaScript加上XML的技術(shù)罷了。而且使用上非常簡(jiǎn)單。

應(yīng)用AJAX的流程:
1、定義一個(gè)事件處理器
2、獲取XMLHTTPRequest,并將事件處理器注冊(cè)給它
3、與服務(wù)器連接
4、發(fā)送信息
5、服務(wù)器返回處理完畢的信息
6、每當(dāng)XMLHTTPRequest的狀態(tài)發(fā)生變化,自動(dòng)觸發(fā)事件處理器
7、事件處理器動(dòng)態(tài)更新頁(yè)面

本文通過(guò)一個(gè)簡(jiǎn)單的例子來(lái)說(shuō)明如何在IE6中使用AJAX技術(shù)。在這例子中,客戶端每隔十秒,從服務(wù)器端取回一個(gè)隨機(jī)的字符串,在不重新刷新頁(yè)情況下,自動(dòng)更新部分頁(yè)面內(nèi)容。例子僅用到了兩個(gè)jsp文件,client.jsp及server.jsp。為了方便說(shuō)明,我用server.jsp來(lái)代替本應(yīng)作為Servlet的Server.java。

先看client.jsp內(nèi)容:
 




"http://www.w3.org/TR/html4/loose.dtd">



< meta http-equiv="Content-Type" content="text/html; charset=gb2312">

< script language="JavaScript">
var xmlHttp;

function getGiftFromServer() {
var url = "http://localhost:8084/ajax/server.jsp";
if (window.ActiveXObject) {
xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
}

xmlHttp.onreadystatechange = showGift;

xmlHttp.open("GET", url, true);
xmlHttp.send(null);

setTimeout("getGiftFromServer()",10000);
}

function showGift() {
if (xmlHttp.readyState == 4 || xmlHttp.readyState == "complete") {
document.getElementById("output").innerHTML = "Time is for " +
xmlHttp.responseText + ".";
}
}
< /script>



AJAX例子





加載頁(yè)面時(shí),將調(diào)用JavaScript的getGiftFromServer()函數(shù),此函數(shù)完成了上面所提的應(yīng)用AJAX的流程
中第1至第4步,
同時(shí)設(shè)定了一個(gè)每隔十秒自動(dòng)調(diào)用此函數(shù)的定時(shí)器。
而showGift()函數(shù)完成所提流程中的第5至第7步。下面詳細(xì)說(shuō)明每一步驟。

1、定義事件處理器,此處理器將在服務(wù)器端返回?cái)?shù)據(jù)時(shí)自動(dòng)被觸發(fā)執(zhí)行。
    function showGift() {
if (xmlHttp.readyState == 4 || xmlHttp.readyState == "complete") {
document.getElementById("output").innerHTML = "Time is for " + xmlHttp.
responseText + ".";
}
}

因?yàn)槲覀冞@里使用異步,readyState屬性用來(lái)判斷服務(wù)器返回信息的狀態(tài)。其值是一個(gè)從0至4的整數(shù),對(duì)應(yīng)于:

0:對(duì)象已創(chuàng)建,但未初始化(未調(diào)用open()方法)
1:對(duì)象已創(chuàng)建,但未調(diào)用send()方法
2:已調(diào)用send()方法,但status及headers還未可用
3:已經(jīng)傳回部分?jǐn)?shù)據(jù),但status及headers還未完全可用
4:已經(jīng)收到所有數(shù)據(jù),可使用所有數(shù)據(jù)


2、獲取XMLHTTPRequest,并將事件處理器注冊(cè)給它

注意:要使用XMLHTTPRequest,需要IE5.0以上的版本。

2.1 取得XMLHTTPRequest

在IE7.0之前獲得XMLHTTPRequest,使用如下代碼:
    if (window.ActiveXObject) {
xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
}

而在IE7.0中:
    if (window.XMLHttpRequest) {
xmlHttp = new XMLHttpRequest
}

2.2 注冊(cè)事件處理器
xmlHttp.onreadystatechange = showGift;

showGift為傳入的方法名,每當(dāng)XMLHTTPRequest的狀態(tài)發(fā)生改變時(shí),將執(zhí)行此方法

3. 與服務(wù)器連接并發(fā)送

xmlHttp.open("GET", url , true)

其方法簽名如下:

xmlHttp.open(bstrMethod, bstrUrl, varAsync, bstrUser, bstrPassword)

其中:
bstrMethod: 連接方式,可用的有GET, POST, PUT, or PROPFIND
bstrUrl: 服務(wù)器的url
varAsync(可選): 調(diào)用是否異步,默認(rèn)為true(調(diào)用立即返回)
bstrUser(可選):用戶名,如果url需要驗(yàn)證時(shí)附上
bstrPassword(可選):密碼,如果url需要驗(yàn)證時(shí)附上

open()方法可以直接打開(kāi)一個(gè)xml文檔,并通過(guò)xmlHttp的responseXML來(lái)讀取相應(yīng)的節(jié)點(diǎn)。如下例:
    xmlHttp.open("GET","http://localhost/books.xml", false);
xmlHttp.send();
var book = xmlhttp.responseXML.selectSingleNode("//book[@id='bk101']");

4、發(fā)送信息
xmlHttp.send(null)

其方法簽名如下:
xmlHttp.send( [varBody])

varBody(可選): 可為字符串或xml等數(shù)據(jù),可以為null。無(wú)返回值

此方法在open()設(shè)為異步時(shí),立即返回;在open()設(shè)為同步時(shí),必須等到reponse對(duì)象從服務(wù)器中返回時(shí)才返回。

5、服務(wù)器返回處理完畢的信息

此時(shí),該是服務(wù)器端工作了,server.jsp的代碼如下:

從三個(gè)字符串中隨機(jī)挑選一個(gè)寫(xiě)入到response中,返回客戶端。

6、客戶端自動(dòng)探知XMLHTTPRequest的狀態(tài)已經(jīng)發(fā)生變化,自動(dòng)觸發(fā)事件處理器

7、事件處理器動(dòng)態(tài)更新頁(yè)面

處理器讀取xmlHttp.responseText的值,并通過(guò)JavaScript動(dòng)態(tài)更新
的內(nèi)容。

document.getElementById("output").innerHTML = "Time is for " + xmlHttp.responseText + ".";
結(jié)語(yǔ):

由上7步可見(jiàn),AJAX并不復(fù)雜,遠(yuǎn)比想像中要簡(jiǎn)單得多。牢牢記住這一點(diǎn),“AJAX讓我們?cè)诓挥盟⑿马?yè)面的情況下,可以動(dòng)態(tài)地更新網(wǎng)頁(yè)部分內(nèi)容”,然后運(yùn)用到各種需要用到這種性能的場(chǎng)合,將使我們的網(wǎng)頁(yè)更有創(chuàng)意。
 

分享:基于AJAX技術(shù)實(shí)現(xiàn)Struts校驗(yàn)框架
提要 實(shí)時(shí)的數(shù)據(jù)校驗(yàn)是AJAX技術(shù)的重要優(yōu)點(diǎn)之一,Struts校驗(yàn)框架通過(guò)加入這種技術(shù)進(jìn)一步豐富了其MVC,從而使得Web應(yīng)用程序的開(kāi)發(fā)效果更接近于桌面應(yīng)用程序。 一、 引言 校驗(yàn)框架的根本目的是實(shí)現(xiàn)域校驗(yàn)。在Web應(yīng)用程序中有許多方法可以實(shí)現(xiàn)域校驗(yàn),總體上可以

來(lái)源:模板無(wú)憂//所屬分類:AJAX教程/更新時(shí)間:2010-04-14
相關(guān)AJAX教程