?? Ajax目前是社區(qū)內(nèi)最熱門的話題之一了,最近在我們的項目中用了大量的Ajax,現(xiàn)在把我們的使用方法在這兒寫出來,希望大家能指教。
因為要用到Ajax就肯定要用到XMLHttpRequest對象,但由于不同的瀏覽器版本,相應的生成它的方法也有所不同,所以我們不得不對瀏覽器的版本進行判斷,試想,如果我們要在很多地方都要寫那些繁瑣的代碼會覺的很麻煩,代碼的重用也很低,所以我們寫一個Ajax的對象。代碼如下:
//*********************************************************
// 目的:??? AJAX類
// 輸入:??? 無
// 返回:??? 返回XMLHttp對象
// 例子:??? var myConn = new XHConn();
//
//?????????? if (!myConn) alert("XMLHTTP not available. Try a newer/better browser.");
//
//?????????? var fnWhenDone = function (oXML) { alert(oXML.responseText); };
//
//?????????? myConn.connect("mypage.php", "POST", "foo=bar&baz=qux", fnWhenDone);
//
//*********************************************************
function XHConn()
{
? var xmlhttp = false, bComplete = false;
? try
? {
? ?xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
? }
? catch (e)
? {
? ?try
? ?{
? ??xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
? ?}
??? catch (e)
??? {
? ??try
? ??{
? ???xmlhttp = new XMLHttpRequest();
? ??}
? ??catch (e)
? ??{
? ???xmlhttp = false;
? ??}
? ?}
? }
? if (!xmlhttp) return null;
? this.connect = function(sURL, sMethod, sVars, fnDone)
? {
??? if (!xmlhttp) return false;
??? bComplete = false;
??? sVars = (sVars == '') ? Math.random() : sVars + "&" + Math.random();
??? sMethod = sMethod.toUpperCase();
??? try
??? {
????? if (sMethod == "GET")
????? {
??????? xmlhttp.open(sMethod, sURL+"?"+sVars, true);
??????? xmlhttp.setRequestHeader("Content-Type", "text/html;charset=GB2312");
??????? sVars = "";
????? }
????? else
????? {
??????? xmlhttp.open(sMethod, sURL, true);
??????? xmlhttp.setRequestHeader("Method", "POST "+sURL+" HTTP/1.1");
??????? xmlhttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
????? }
????? xmlhttp.onreadystatechange = function()
????? {
??????? if (xmlhttp.readyState == 4 && !bComplete)
??????? {
????????? bComplete = true;
????????? fnDone(xmlhttp);
??????? }
????? };
?????
????? xmlhttp.send(sVars);
??? }
??? catch(z)
??? {
??? ?return false;
??? }
??? return true;
? };
?
? return this;
}
通過這個對象,我們把那些繁瑣的代碼都封裝到里面,這樣大大提高了代碼的重用性,每次要用Ajax時我們只需要在我們的頁面上 new一個XHConn()對象就行了,然后通過調(diào)用它的方法connect(sURL, sMethod, sVars, fnDone)就可以和服務器進行異步交互了。