將Ajax包裝成對象使用

          ?? Ajax目前是社區內最熱門的話題之一了,最近在我們的項目中用了大量的Ajax,現在把我們的使用方法在這兒寫出來,希望大家能指教。

          因為要用到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()對象就行了,然后通過調用它的方法connect(sURL, sMethod, sVars, fnDone)就可以和服務器進行異步交互了。



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

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

          導航

          統計

          常用鏈接

          留言簿(3)

          隨筆分類

          隨筆檔案

          文章分類

          文章檔案

          相冊

          收藏夾

          Java技術網站

          友情鏈接

          國內一些開源網站

          最新隨筆

          搜索

          積分與排名

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 启东市| 张家界市| 北京市| 阳西县| 洪雅县| 宾川县| 双流县| 平武县| 武城县| 休宁县| 内黄县| 昆明市| 会泽县| 楚雄市| 沙坪坝区| 犍为县| 正阳县| 长阳| 渝北区| 安塞县| 宁武县| 大厂| 和林格尔县| 吉安县| 共和县| 余姚市| 靖远县| 平南县| 凭祥市| 荣成市| 古蔺县| 盐山县| 赣州市| 额尔古纳市| 古交市| 沿河| 西平县| 漳平市| 玉溪市| 哈尔滨市| 嘉荫县|