一江春水向東流

          做一個(gè)有思想的人,期待與每一位熱愛思考的人交流,您的關(guān)注是對(duì)我最大的支持。

            BlogJava :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理 ::
            44 隨筆 :: 139 文章 :: 81 評(píng)論 :: 0 Trackbacks

          AJAX學(xué)習(xí)

          從天極網(wǎng)上看了一些關(guān)于AJAX的內(nèi)容之后,就想試試看。小試牛刀,寫了一個(gè)小程序

          這是客戶端代碼:
          <html>
          <head>
          <title></title>
          <script language="javascript">
          /**
          * 初始化一個(gè)xmlhttp對(duì)象
          */
          function InitAjax()
          {
           var ajax=false;
           try {
            ajax = new ActiveXObject("Msxml2.XMLHTTP");
           } catch (e) {
            try {
             ajax = new ActiveXObject("Microsoft.XMLHTTP");
            } catch (E) {
             ajax = false;
            }
           }
           if (!ajax && typeof XMLHttpRequest!='undefined') {
            ajax = new XMLHttpRequest();
           }
           return ajax;
          }
          </script>
          </head>
          <body>
          <a href="#" onclick="getNews(1)">新聞</a>
          <div id="show_news"></div>
          <script>
          function getNews(newID)
          {
          if(typeof(newID)=='undefined')
          {
          ?return false;
          }
          var url="getmsg.php?id="+newID;
          var show=document.getElementById("show_news");
          var ajax=InitAjax();
          ajax.open("GET",url,true);
          ajax.onreadystatechange=function(){
          if(ajax.readyState==4&& ajax.status==200){
          show.innerHTML=ajax.responseText;
          }
          }
          ajax.send(null);
          }
          </script>

          下面是服務(wù)器端的.PHP文件
          <?php
          if($_GET[id]){
          ?echo"all right<br>";
          ?echo"the id is".$id;
          }
          ?>
          放到我的空間上測(cè)度一下效果不錯(cuò)。

          在Ajax中,關(guān)鍵就是用到了xmlhttp對(duì)象以及javascript,先是在初始化程序中生成一個(gè)xmlhttp對(duì)象,如果是IE的話,就是ActiveXObject對(duì)象。進(jìn)一步就是把請(qǐng)求方法和url作為參數(shù)傳入這個(gè)對(duì)象,當(dāng)有響應(yīng)時(shí)再實(shí)現(xiàn)onreadystatechange()方法。對(duì)返回的內(nèi)容進(jìn)行處理。原理就是這樣簡(jiǎn)單。

          用POST方法實(shí)現(xiàn),上面那個(gè)用的是GET方法。這個(gè)我沒有寫具體的代碼作測(cè)試,只是我把不同的地方指出來。
          POST方法主要是通過表單來實(shí)現(xiàn),但是這個(gè)表單不能寫上提交目標(biāo),表單的頭應(yīng)該寫成類似于下面的格式
          <form name="user_info">,而action,method就可以免了。


          //構(gòu)建一個(gè)表單,表單中不需要action、method之類的屬性,全部由ajax來搞定了。
          <form name="user_info">
          姓名:<input type="text" name="user_name" /><br />
          年齡:<input type="text" name="user_age" /><br />
          性別:<input type="text" name="user_sex" /><br />

          <input type="button" value="提交表單" onClick="saveUserInfo()">
          </form>
          //構(gòu)建一個(gè)接受返回信息的層:
          <div id="msg"></div>

          function saveUserInfo()
          {
           //獲取接受返回信息層
           var msg = document.getElementById("msg");

           //獲取表單對(duì)象和用戶信息值
           var f = document.user_info;
           var userName = f.user_name.value;
           var userAge = f.user_age.value;
           var userSex = f.user_sex.value;

           //接收表單的URL地址
           var url = "/save_info.php";

           //需要POST的值,把每個(gè)變量都通過&來聯(lián)接
           var postStr = "user_name="+ userName +"&user_age="+ userAge +"&user_sex="+ userSex;

           //實(shí)例化Ajax
           var ajax = InitAjax();
           
           //通過Post方式打開連接
           ajax.open("POST", url, true);

           //定義傳輸?shù)奈募﨟TTP頭信息
           ajax.setRequestHeader("Content-Type","application/x-www-form-urlencoded");

           //發(fā)送POST數(shù)據(jù)
           ajax.send(postStr);

           //獲取執(zhí)行狀態(tài)
           ajax.onreadystatechange = function() {
            //如果執(zhí)行狀態(tài)成功,那么就把返回信息寫到指定的層里
            if (ajax.readyState == 4 && ajax.status == 200) {
             msg.innerHTML = ajax.responseText;
            }
           }
          }

          比較GET和POST兩方法,因?yàn)镻OST方法能發(fā)送任何數(shù)據(jù),而且大小沒有限制,因而比較靈活。不過要在ajax對(duì)象中指定HTTP頭信息。其它同GET方法類似。

          posted on 2006-11-24 12:38 allic 閱讀(219) 評(píng)論(0)  編輯  收藏 所屬分類: PHP+MySQL開發(fā)
          主站蜘蛛池模板: 芜湖市| 湟源县| 宜兰县| 永顺县| 大足县| 丽水市| 年辖:市辖区| 中方县| 易门县| 嘉峪关市| 土默特右旗| 嘉禾县| 年辖:市辖区| 台东市| 和政县| 望城县| 庆安县| 酉阳| 西充县| 泌阳县| 锡林郭勒盟| 寿阳县| 墨竹工卡县| 竹山县| 澎湖县| 芦溪县| 贡嘎县| 苏尼特右旗| 景洪市| 手机| 吉林市| 大冶市| 灌阳县| 都匀市| 环江| 丰台区| 洪泽县| 林州市| 临邑县| 砀山县| 上高县|