資源描述:
《Web應(yīng)用程序的簡單AJAX實(shí)現(xiàn)》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在工程資料-天天文庫。
1、ASP.NETWeb應(yīng)用程序的簡單AJAX實(shí)現(xiàn) 提要本文描述了使用一種簡單的方式來實(shí)現(xiàn)在ASP.NETweb應(yīng)用程序中加入AJAX功能?! ∫弧⒑喗椤 ”疚拿枋隽艘环N簡單的方式來實(shí)現(xiàn)在ASP.NETweb應(yīng)用程序中加入AJAX功能。我們還將討論使用AJAX的優(yōu)缺點(diǎn)。為了說明問題,本文還提供了一些可用的JavaScript和C#.NET代碼?! 《?、為什么使用AJAX 大多數(shù)讀者可能已經(jīng)知道,AJAX代表了異步JavaScript+XML。這種技術(shù)首先由微軟在1999年引入,并以"使用遠(yuǎn)程調(diào)用的DHTML/JavaScriptweb應(yīng)用程序"著稱。這一技
2、術(shù)的基本思想是,允許一個(gè)互聯(lián)網(wǎng)瀏覽器向一個(gè)遠(yuǎn)程頁面/服務(wù)作異步的HTTP調(diào)用,并且用收到的結(jié)果更新一個(gè)當(dāng)前web頁面而不必刷新整個(gè)頁面。根據(jù)這種技術(shù)創(chuàng)建者的意見,這種技術(shù)應(yīng)能夠改進(jìn)客戶端的體驗(yàn)-使得HTTP頁面外觀與使用感覺很類似于Windows桌面應(yīng)用程序。 因?yàn)檫@種技術(shù)的核心實(shí)現(xiàn)是基于互聯(lián)網(wǎng)瀏覽器功能,所以其用途在當(dāng)時(shí)是很有限的。但是,幾年過去了,隨著新一代瀏覽器的支持和大量的應(yīng)用實(shí)踐(例如Google,Amazon.com,eBay等),這種技術(shù)已經(jīng)重新煥發(fā)生機(jī)?! 〗裉?,它以AJAX著名,被作為任何提供高級(jí)用戶體驗(yàn)的動(dòng)態(tài)頁面的自然的構(gòu)成部分?!?/p>
3、 三、方案描述 在本文中我們所推薦的方案盡管很簡單,然而卻十分有效地實(shí)現(xiàn)了AJAX功能。這個(gè)程序很容易維護(hù)和修改,不要求開發(fā)者具備任何特別的技巧;而且,根據(jù)我們的經(jīng)驗(yàn),它還是跨瀏覽器兼容的。 基本上,一個(gè)常規(guī)的類似AJAX的實(shí)現(xiàn)包括兩個(gè)主要組成部分:一個(gè)使用JavaScript代碼進(jìn)行AJAX調(diào)用并接收響應(yīng)的客戶端HTML頁面;一個(gè)遠(yuǎn)程頁面-它能夠接收一個(gè)請(qǐng)求并對(duì)請(qǐng)求的信息加以響應(yīng)。在客戶端頁面中的JavaScript代碼負(fù)責(zé)實(shí)例化一個(gè)XmlHttp對(duì)象,然后提供給這個(gè)對(duì)象一個(gè)回調(diào)方法-它負(fù)責(zé)處理收到的信息,最后把請(qǐng)求經(jīng)由XmlHttp對(duì)象發(fā)送到遠(yuǎn)程
4、頁面。所有這些都是通過JavaScript代碼來實(shí)現(xiàn)的?! ∥覀兊姆椒ㄖ饕轻槍?duì)于ASP.NET應(yīng)用程序中的應(yīng)用,并且考慮下列可能的情形: ·AJAX調(diào)用可以發(fā)生于web應(yīng)用程序的不同的ASP.NET頁面上甚至是遠(yuǎn)程頁面上; ·一遠(yuǎn)程頁面URL可能包含動(dòng)態(tài)計(jì)算的參數(shù),并且可能在ASP.NET頁面的code-behind處構(gòu)建一個(gè)URL字符串更為方便些; ·在更新一個(gè)HTML頁面之前,一個(gè)遠(yuǎn)程頁面可能響應(yīng)于一個(gè)復(fù)雜的數(shù)據(jù)分析要求; ·一遠(yuǎn)程頁面可能或者是一個(gè)外部的第三方頁面,或者是該Web應(yīng)用程序自己的頁面或服務(wù)?! ∷械倪@些考慮都顯示在下圖中:
5、 四、實(shí)現(xiàn) (一)基本AJAXJavaScript方法 我把所有的JavaScript方法分成兩部分:調(diào)用頁面特定的JavaScript方法,和通用于所有調(diào)用頁面的AJAXJavaScript方法。特定的方法還包括一個(gè)回調(diào)函數(shù),由于它負(fù)責(zé)更新頁面內(nèi)容。通用的AJAX方法負(fù)責(zé)實(shí)例化一個(gè)XmlHttp對(duì)象并向遠(yuǎn)程頁面發(fā)送異步請(qǐng)求?! 〉玫揭粋€(gè)XmlHttp對(duì)象的過程因?yàn)g覽器的不同而有所不同。我把它們區(qū)分為兩種不同的基本類型:微軟瀏覽器(IE家族之一)和Mozilla瀏覽器(它是指MozillaFirefox,Netscape,或Safari之一)。我還
6、在Opera瀏覽器上測試了本文中的代碼,但是我不可能保證它會(huì)一直工作良好。functionGetXmlHttpObject(handler){ varobjXmlHttp=null; if(!window.XMLHttpRequest){ //微軟 objXmlHttp=GetMSXmlHttp(); if(objXmlHttp!=null){ objXmlHttp.onreadystatechange=handler; } } else{ //Mozilla
7、Netscape
8、Safari objXmlHttp=newXMLHttpRe
9、quest(); if(objXmlHttp!=null){ objXmlHttp.onload=handler; objXmlHttp.onerror=handler; } } returnobjXmlHttp;}functionGetMSXmlHttp(){ varxmlHttp=null; varclsids=["Msxml2.XMLHTTP.6.0","Msxml2.XMLHTTP.5.0","Msxml2.XMLHTTP.4.0","Msxml2.XMLHTTP.3.0","Msxml2.XMLHTTP.2.6","Microsof
10、t.XMLHTTP.1.0","Microsoft.XMLHTTP.1","Mi