<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    posts - 22,comments - 35,trackbacks - 0

            首先XMLHttpRequest不是web標(biāo)準(zhǔn),而是大部分主流瀏覽器都支持的一種擴(kuò)展技術(shù)。它被認(rèn)為是一種異步調(diào)用的實(shí)現(xiàn)技術(shù),因?yàn)樗緛?lái)是被設(shè)計(jì)在后臺(tái)取數(shù)據(jù)用的。在IE中它被作為一個(gè)ActiveX控件提供,而其他一些瀏覽器都提供一些本地API以供調(diào)用。
    下面是一些關(guān)于XMLHttpRequest的基本方法:

    1、獲取得一個(gè)XMLHttpRequest對(duì)象:

    function getXMLHttpRequest() {
      
    var xRequest = null;
      
    if (window.XMLHttpRequest) {
        xRequest 
    = new XMLHttpRequest();
      }
     else if (typeof ActiveObject !=  "undefined"{
        xRequest 
    = new ActiveXObject("Microsoft.XMLHTTP");
      }

      
    return xRequest;
    }

    2、向服務(wù)器發(fā)送XMLHttpRequest:

    function sendRequest(url, params, HttpMethod) {
      
    if (!HttpMethod){
        HttpMethod 
    = "POST";
      }

      
    var req = getXMLHttpRequest();
      
    if (req) {
        req.open(HttpMethod, url, 
    true);
        req.setRequestHeader(
    "Content-Type""application/x-www-form-urlencoded");
        req.send(params);
      }

    }

    3、使用回調(diào)方法來(lái)監(jiān)測(cè)XMLHttpRequest對(duì)象的狀態(tài)
    XMLHttpRequest使用屬性readyState來(lái)表示它的狀態(tài)
      0 = 未初始化
      1 = 讀取中
      2 = 已讀取
      3 = 交互中
      4 = 完成
    在事件驅(qū)動(dòng)開(kāi)發(fā)中我們經(jīng)常使用回調(diào)技術(shù),比如UI設(shè)計(jì)中的對(duì)按鍵的響應(yīng)等等。我們可以使用對(duì)XMLHttpRequest對(duì)象的onreadystatechange屬性來(lái)設(shè)置監(jiān)視XMLHttpRequest對(duì)象的狀態(tài)的回調(diào)方法:

    function sendRequest(url, params, HttpMethod) {
      
    if (!HttpMethod){
        HttpMethod 
    = "POST";  
      }
      
      
    var req = getXMLHttpRequest();
      
    if (req) {
        req.onreadystatechange 
    = onReadStateChage;
        req.open(HttpMethod, url, 
    true);    
        req.setRequestHeader(
    "Content-Type""application/x-www-form-urlencoded");    
        req.send(params);  
      }

    }


    function onReadyStateChange()
      
    //
    }


    4、完整的例子

    <html>
      
    <head>
      
    <script language="JavaScript">
        
    var req = null;
        
    var infos = new Array("init""loading""loaded""running""finished");
        
    var console = null;
        
        
    function initXMLHttpRequest() {
          
    if (req == null{
            
    if (window.XMLHttpRequest) {
              req 
    = new XMLHttpRequest();
            }

            
    else if (typeof ActiveObject !=  "undefined"{
              req 
    = new ActiveXObject("Microsoft.XMLHTTP");    
            }
      
          }

        }

        
        
    function sendRequest(url) {
          
    if (req == null{
            initXMLHttpRequest();  
          }
     
          
          
    if (req) {
            req.onreadystatechange 
    = onReadyStateChange;
            req.open(
    "GET", url, true);
            req.setRequestHeader(
    "Content-Type""application/x-www-form-urlencoded");
            req.send(
    null);  
          }

        }

        
        
    function onReadyStateChange(){  
          
    if (console == null{
            console 
    = document.getElementById('console');  
          }

          
          
    var state = req.readyState;
          
    var txt;  
          
    if (state == 4{
            
    if (!req.status == 200{
              txt 
    = "response:" + req.status;    
            }
     else {
              txt 
    = "response:" + req.responseText;
            }
      
          }
     else {    
            txt 
    = infos[state];  
          }

          
          
    var newline = document.createElement("div");
          newline.appendChild(document.createTextNode(txt));  
          console.appendChild(newline); 
        }

      
    </script>
      
    </head>
      
    <body>
        
    <div id="console"></div>
        
    <input type="button" onClick="sendRequest('ajax_test.txt')" value="Send Request"/>
      
    </body>
    </html>

    將上面的代碼保存為ajax_text.html文檔中,然后在同一路徑放一個(gè)ajax_test.txt,在這個(gè)文本文件寫(xiě)下一行文字,用瀏覽器打開(kāi) ajax_text.html,點(diǎn)擊"Send Request"看看發(fā)生了什么?


    學(xué)習(xí)參考資料:
    《AJAX in Action》
    AJAX開(kāi)發(fā)簡(jiǎn)略
    AJAX開(kāi)發(fā)簡(jiǎn)略續(xù)一

    posted on 2006-02-26 13:42 kelven 閱讀(394) 評(píng)論(0)  編輯  收藏 所屬分類(lèi): Ajax

    只有注冊(cè)用戶(hù)登錄后才能發(fā)表評(píng)論。


    網(wǎng)站導(dǎo)航:
     
    主站蜘蛛池模板: 99re热免费精品视频观看| 国产无遮挡无码视频免费软件| 亚洲欧洲免费无码| 亚洲人成电影亚洲人成9999网| 免费在线看黄的网站| 国产V亚洲V天堂无码| 一级毛片aaaaaa免费看| 亚洲视频小说图片| 三年片在线观看免费大全 | 亚洲一级免费毛片| 色se01短视频永久免费| 亚洲精品成a人在线观看夫| 国产又大又长又粗又硬的免费视频| 亚洲色偷偷色噜噜狠狠99网| 免费无码黄网站在线观看| 黄人成a动漫片免费网站| 国产成人毛片亚洲精品| 国产情侣久久久久aⅴ免费| 久久久久亚洲av无码专区喷水 | a级毛片无码免费真人| 亚洲老熟女五十路老熟女bbw| 日本免费v片一二三区| www在线观看播放免费视频日本| 亚洲精品少妇30p| 免费观看美女用震蛋喷水的视频| 最新国产成人亚洲精品影院| 国产免费牲交视频| 丁香花在线视频观看免费| 亚洲午夜成激人情在线影院| 好爽好紧好大的免费视频国产| 国产激情久久久久影院老熟女免费 | 一级毛片免费播放试看60分钟| 国产成人无码综合亚洲日韩| 国产一卡2卡3卡4卡2021免费观看| 亚洲日本中文字幕天天更新| MM131亚洲国产美女久久| 日本片免费观看一区二区| 美女被免费网站在线视频免费| 亚洲va久久久噜噜噜久久男同 | 成人午夜性A级毛片免费| 国产精品成人免费观看|