下載記憶
          Download my Memory
          posts - 33,  comments - 228,  trackbacks - 0
          最近看了些關于Ajax一些基礎的東西,感覺也沒有什么新鮮的技術,主要是JavaScript和XML,可能是我了解的太少吧.另外關于XMLHttpRequest可以參考網站: http://www.xmlhttp.cn
          下面我演示一下我自己編寫的一段代碼:
          1) 準備一個Servlet,當請求該Servlet時,它將返回以HTML格式返回"Hello World!"字樣.

          public?class?Hello?extends?HttpServlet?{
          ????
          public?void?doGet(HttpServletRequest?req,?HttpServletResponse?res)
          ????????
          throws?ServletException,?IOException?{
          ????????
          this.doPost(req,?res);
          ????}

          ????
          public?void?doPost(HttpServletRequest?req,?HttpServletResponse?res)
          ????????
          throws?ServletException,?IOException?{
          ????????res.setContentType(
          "text/html");
          ????????res.setHeader(
          "Cache-Control","no-cache");
          ????????res.getWriter().write(
          "Hello?World!");
          ????}

          }
          2)準備一個HTML文件.當點擊"Order"按鈕時,網頁向服務器發送異步請求,請求成功則在按鈕下方顯示"Hello World!".
          ?1<html>
          ?2<head>
          ?3????<title>Test?Ajax</title>
          ?4????<script?language="JavaScript">
          ?5????????var?req;
          ?6????????var?url;
          ?7????????function?requestServlet()?{
          ?8????????????if?(window.XMLHttpRequest)?{
          ?9????????????????req?=?new?XMLHttpRequest();
          10????????????}
          ?else?if?(window.ActiveXObject)?{
          11????????????????req?=?new?ActiveXObject("Microsoft.XMLHTTP");
          12????????????}

          13????????????var?url?=?"http://localhost:8080/ajax/HelloServlet";
          14????????????//var?url?=?"HelloServlet";????//相對,絕對地址都可以
          15????????????req.open("POST",?url,?true);
          16????????????req.setRequestHeader("Content-Type",?"application/x-www-form-urlencoded");
          17????????????req.onreadystatechange=validator;
          18????????????req.send();
          19????????}

          20????????function?validator()?{
          21????????????if?(req.readystate?==?4)?{
          22????????????????if?(req.status?==?200)?{
          23????????????????????msg.innerHTML?=?req.responseText;
          24????????????????}

          25????????????????else{
          26????????????????????msg.innerHTML?=?"req.status?=?"?+?req.status;
          27????????????????}

          28????????????}

          29????????}

          30????
          </script>
          31</head>
          32
          33<body>
          34<input?type="button"?name="order"?value="Order"?onClick="requestServlet()"/><br/>
          35<span?id="msg"></span>
          36</body>
          37</html>
          代碼的8-12行用來產生一個XMLHttpRequest對象,之后調用該對象Open函數對其初始化.其中的布爾值"true"用來表明是否異步請求.情參照XMLHttp.cn的注解.17行onreadystatechange的意思是一旦readyState的值發生變化就會調用validator()函數.20行中readyState如果等于4表明從服務器接收數據完畢,此時可以通過responseBody,responseText或responseXML來獲取完整的回應數據,不過在此動作之前最好先判斷一下請求到的內容是否是你想要的內容XMLHttpRequest的成員status存儲的是當前請求的http狀態碼,如果它等于200表明請求成功.最常見的錯誤是404代碼的"Not Found"錯誤.要注意的是此屬性必須在數據接受完畢之后,也就是說readyState等于4時才能獲取.
          ? 另外對于處理XML文件則需用到XMLHttpRequest的responseXML屬性(不是方法),它將響應信息格式化為Xml Document對象并返回.例如把Servlet的doPost()方法修改為
          1resp.setContentType("text/xml");
          2resp.setHeader("Cache-Control","no-cache");
          3resp.getWriter().write("<message>Hello?World!</message>");
          注意第一行要設置文檔類型為XML.
          此時JavaScript解析時應使用ResponseXML了.
          1function?validator()?{
          2????if?(req.readystate?==?4)?{
          3????????if(req.status==200){
          4????????????var?message?=?req.responseXML.getElementsByTagName("message")[0];
          5????????????msg.innerHTML?=?message.childNodes[0].nodeValue;
          6????????}
          7????}
          8}
          體驗一下Ajax吧! ^_^
          posted on 2006-03-27 10:02 下載記憶 閱讀(430) 評論(1)  編輯  收藏 所屬分類: 學習

          FeedBack:
          # re: 以最簡單的代碼展現 Ajax
          2006-03-28 14:40 | 鳥不生蛋蛋的地方
          好文章!  回復  更多評論
            

          永久記載下我的記憶

          http://www.jpai.cn


          <2006年3月>
          2627281234
          567891011
          12131415161718
          19202122232425
          2627282930311
          2345678

          常用鏈接

          留言簿(2)

          隨筆分類

          隨筆檔案

          搜索

          •  

          積分與排名

          • 積分 - 29381
          • 排名 - 1407

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 太仆寺旗| 边坝县| 陆河县| 江门市| 邵东县| 方正县| 含山县| 天祝| 永年县| 五原县| 新营市| 崇信县| 巴青县| 尤溪县| 宿州市| 兴安盟| 五台县| 筠连县| 马鞍山市| 大兴区| 罗田县| 鹿泉市| 工布江达县| 宁德市| 宾阳县| 开远市| 西吉县| 内丘县| 漳浦县| 潼南县| 南郑县| 开远市| 易门县| 色达县| 阳朔县| 伊川县| 吴江市| 河北区| 六枝特区| 荆州市| 博野县|