將Ajax包裝成對(duì)象使用

          ?? Ajax目前是社區(qū)內(nèi)最熱門(mén)的話題之一了,最近在我們的項(xiàng)目中用了大量的Ajax,現(xiàn)在把我們的使用方法在這兒寫(xiě)出來(lái),希望大家能指教。

          因?yàn)橐玫紸jax就肯定要用到XMLHttpRequest對(duì)象,但由于不同的瀏覽器版本,相應(yīng)的生成它的方法也有所不同,所以我們不得不對(duì)瀏覽器的版本進(jìn)行判斷,試想,如果我們要在很多地方都要寫(xiě)那些繁瑣的代碼會(huì)覺(jué)的很麻煩,代碼的重用也很低,所以我們寫(xiě)一個(gè)Ajax的對(duì)象。代碼如下:

          //*********************************************************
          // 目的:??? AJAX類
          // 輸入:??? 無(wú)
          // 返回:??? 返回XMLHttp對(duì)象
          // 例子:??? 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;
          }


          通過(guò)這個(gè)對(duì)象,我們把那些繁瑣的代碼都封裝到里面,這樣大大提高了代碼的重用性,每次要用Ajax時(shí)我們只需要在我們的頁(yè)面上 new一個(gè)XHConn()對(duì)象就行了,然后通過(guò)調(diào)用它的方法connect(sURL, sMethod, sVars, fnDone)就可以和服務(wù)器進(jìn)行異步交互了。



          posted on 2006-06-09 16:50 nbt 閱讀(296) 評(píng)論(0)  編輯  收藏 所屬分類: Ajax技術(shù)

          <2006年6月>
          28293031123
          45678910
          11121314151617
          18192021222324
          2526272829301
          2345678

          導(dǎo)航

          統(tǒng)計(jì)

          常用鏈接

          留言簿(3)

          隨筆分類

          隨筆檔案

          文章分類

          文章檔案

          相冊(cè)

          收藏夾

          Java技術(shù)網(wǎng)站

          友情鏈接

          國(guó)內(nèi)一些開(kāi)源網(wǎng)站

          最新隨筆

          搜索

          積分與排名

          最新評(píng)論

          閱讀排行榜

          評(píng)論排行榜

          主站蜘蛛池模板: 都匀市| 遂宁市| 宣武区| 长海县| 乌鲁木齐市| 泽库县| 东阿县| 锡林浩特市| 兴海县| 平凉市| 河南省| 驻马店市| 庄浪县| 扎鲁特旗| 江山市| 天门市| 类乌齐县| 江孜县| 封开县| 泰来县| 翁牛特旗| 肃南| 万源市| 孙吴县| 遵义市| 福鼎市| 乌审旗| 白玉县| 周宁县| 邮箱| 怀集县| 中西区| 自治县| 太原市| 临邑县| 漯河市| 贡山| 阿荣旗| 阿巴嘎旗| 池州市| 定远县|