一江春水向東流

          做一個有思想的人,期待與每一位熱愛思考的人交流,您的關注是對我最大的支持。

            BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
            44 隨筆 :: 139 文章 :: 81 評論 :: 0 Trackbacks

          AJAX學習

          從天極網上看了一些關于AJAX的內容之后,就想試試看。小試牛刀,寫了一個小程序

          這是客戶端代碼:
          <html>
          <head>
          <title></title>
          <script language="javascript">
          /**
          * 初始化一個xmlhttp對象
          */
          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>

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

          在Ajax中,關鍵就是用到了xmlhttp對象以及javascript,先是在初始化程序中生成一個xmlhttp對象,如果是IE的話,就是ActiveXObject對象。進一步就是把請求方法和url作為參數傳入這個對象,當有響應時再實現onreadystatechange()方法。對返回的內容進行處理。原理就是這樣簡單。

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


          //構建一個表單,表單中不需要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>
          //構建一個接受返回信息的層:
          <div id="msg"></div>

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

           //獲取表單對象和用戶信息值
           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的值,把每個變量都通過&來聯接
           var postStr = "user_name="+ userName +"&user_age="+ userAge +"&user_sex="+ userSex;

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

           //定義傳輸的文件HTTP頭信息
           ajax.setRequestHeader("Content-Type","application/x-www-form-urlencoded");

           //發送POST數據
           ajax.send(postStr);

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

          比較GET和POST兩方法,因為POST方法能發送任何數據,而且大小沒有限制,因而比較靈活。不過要在ajax對象中指定HTTP頭信息。其它同GET方法類似。

          posted on 2006-11-24 12:38 allic 閱讀(215) 評論(0)  編輯  收藏 所屬分類: PHP+MySQL開發
          主站蜘蛛池模板: 昌平区| 克山县| 马鞍山市| 北京市| 塔城市| 探索| 夹江县| 日土县| 教育| 吉林省| 青田县| 昌图县| 分宜县| 山阴县| 芮城县| 江孜县| 西畴县| 始兴县| 静宁县| 宜章县| 绥滨县| 九龙县| 通山县| 侯马市| 象山县| 保定市| 淅川县| 永城市| 施秉县| 五常市| 涟源市| 海口市| 武清区| 大宁县| 溧水县| 如皋市| 吴江市| 卓资县| 博乐市| 彰化县| 游戏|