ASP.NET中使用AJAX的簡單方法
|
實(shí)現(xiàn)基本的AJAX JavaScript方法
我將JavaScript方法分成兩部分:調(diào)用特殊頁的JavaScript方法和一般的JavaScript方法。特殊的方法包括一個(gè)回調(diào)方法,它的作用是更新頁面內(nèi)容。而其它的AJAX方法負(fù)責(zé)建立一個(gè)XmlHttp對(duì)象,并向服務(wù)端發(fā)出一個(gè)異步的HTTP請(qǐng)求。
建立的XmlHttp對(duì)象因客戶端瀏覽器的不同而有所差異。本文只考慮兩種瀏覽器:一個(gè)是Microsoft的IE系列瀏覽器;另一個(gè)是Mozilla系列瀏覽器,包括Mozilla Firefox、Netscape和Safari。我也在Opera瀏覽器上測(cè)試過,但我不能保證本文的代碼可以很好地運(yùn)行Opera瀏覽器上。下面是如何建立XmlHttp對(duì)象的代碼:
function GetXmlHttpObject(handler) { var objXmlHttp = null; if (!window.XMLHttpRequest) { // Microsoft objXmlHttp = GetMSXmlHttp(); if (objXmlHttp != null) { objXmlHttp.onreadystatechange = handler; } } else { // Mozilla | Netscape | Safari objXmlHttp = new XMLHttpRequest(); if (objXmlHttp != null) { objXmlHttp.onload = handler; objXmlHttp.onerror = handler; } } return objXmlHttp; }
function GetMSXmlHttp() { var xmlHttp = null; var clsids = ["Msxml2.XMLHTTP.6.0","Msxml2.XMLHTTP.5.0","Msxml2.XMLHTTP.4.0","Msxml2.XMLHTTP.3.0", "Msxml2.XMLHTTP.2.6","Microsoft.XMLHTTP.1.0", "Microsoft.XMLHTTP.1","Microsoft.XMLHTTP"]; for(var i=0; i<clsids.length && xmlHttp == null; i++) { xmlHttp = CreateXmlHttp(clsids[i]); } return xmlHttp; }
function CreateXmlHttp(clsid) { var xmlHttp = null; try { xmlHttp = new ActiveXObject(clsid); lastclsid = clsid; return xmlHttp; } catch(e) {} }
由于MSXML5只是為Office設(shè)計(jì)的,因此,我們可以不考慮MSXML5。所以GetMSXmlHttp方法可以簡化為以下形式:
function GetMSXmlHttp() { var xmlHttp = null; var clsids = ["Msxml2.XMLHTTP.6.0","Msxml2.XMLHTTP.4.0","Msxml2.XMLHTTP.3.0"]; for(var i=0; i<clsids.length && xmlHttp == null; i++) { xmlHttp = CreateXmlHttp(clsids[i]); } return xmlHttp; }
我們可以看出,GetXmlHttpObject方法有一個(gè)handle參數(shù),這個(gè)參數(shù)指向一個(gè)回調(diào)方法,這個(gè)回調(diào)方法將被定義在每一個(gè)需要刷新的aspx頁中?,F(xiàn)在我們已經(jīng)有了一個(gè)XmlHttp對(duì)象,接下來我們可以發(fā)送一個(gè)異步的HTTP請(qǐng)求了。
function SendXmlHttpRequest(xmlhttp, url) { xmlhttp.open(’GET’, url, true); xmlhttp.send(null); }
在以上代碼中我使用了一個(gè)GET HTTP請(qǐng)求發(fā)送了一個(gè)URL,你可以很容易修改以上的JavaScript代碼,使其發(fā)送其它的HTTP方法。
|
|