將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)論排行榜

          主站蜘蛛池模板: 黑龙江省| 义乌市| 轮台县| 杭州市| 景德镇市| 松江区| 江油市| 宜阳县| 罗定市| 灵台县| 磐安县| 安化县| 盈江县| 湄潭县| 泽普县| 儋州市| 万源市| 湖口县| 垣曲县| 旬邑县| 丰顺县| 松原市| 保亭| 株洲市| 遵化市| 大渡口区| 于都县| 宾川县| 冷水江市| 汽车| 广饶县| 华宁县| 通道| 洪洞县| 无棣县| 天柱县| 兴仁县| 拜城县| 万全县| 黄骅市| 奈曼旗|