AJAX 詳解註釋很全來自網際網路

汪磊發表於2013-08-14
   1:  //使用者名稱校驗的方法
   2:  //這個方法使用XMLHTTPRequest物件進行AJAX的非同步資料互動
   3:  var xmlhttp;
   4:  function verify(){
   5:      //1.使用dom的方式獲取文字框中的值
   6:      //document.getElementBuId("userName")是dom中獲取元素節點的一種方法,一個元素節點對應HTML頁面中的一個標籤,如果
   7:      //.value可以獲取一個元素節點的value屬性值
   8:      var userName = document.getElementById("userName").value;
   9:   
  10:      //2.建立XMLHttpRequest物件
  11:      //這是XMLHttpRequest兌現使用中最為複雜的一步
  12:      //需要這對IE和其他型別瀏覽器建立這個物件的不方式寫不同的程式碼
  13:      if(window.XMLHttpRequest){
  14:         //針對FireFox,Mozillar,opera,safari,IE7,IE8
  15:           xmlhttp = new XMLHttpRequest();
  16:          //針對某些特定版本的mozillar瀏覽器的bug修正
  17:           if(xmlhttp.overrideMimeType){
  18:                   xmlhttp.overrideMimeType("text/xml")
  19:           }
  20:      }else if(window.ActiveXObject){
  21:           //針對IE5,IE5.5,IE6(IE7,IE8)
  22:           //兩個可以用於建立XMLHTTPRequest物件的控制元件名稱,儲存在一個js陣列中
  23:          //排在前面的版本較新
  24:          var activexName =["MSXML2.XMLHTTP","Microsoft.XMLHTTP"];
  25:         for(var i=0;i<activexName.length;i++){
  26:             try{
  27:               //取出一個控制元件名進行建立,如果建立成功就終止迴圈
  28:               //如果建立失敗,丟擲異常,然後繼續迴圈,繼續嘗試建立
  29:               xmlhttp = new ActiveXObject(activexName[i]);
  30:                 break;
  31:             }   catch(e){
  32:             }
  33:         }
  34:    }
  35:   
  36:     // 確認XMLHttpRequest物件建立成功
  37:  //        if(!xmlhttp){
  38:  //             alert("XMLHttpRequest物件建立失敗!");
  39:  //             return;
  40:  //        }else{
  41:  //           //alert(xmlhttp);
  42:  //            alert(xmlhttp.readyState);
  43:  //        } 
  44:   
  45:      //2 註冊回撥函式
  46:      //註冊回撥函式時只需要函式名不要加括號
  47:      //我們需要註冊的是函式名稱,如果加上括號,就把函式的返回值給註冊上了,這是錯誤的
  48:           xmlhttp.onreadystatechange = callback;
  49:   
  50:      //3設定連線資訊
  51:      //第一個參數列示http的請求方式。支援所有http的請求方式。主要使用get和post
  52:      //第二個參數列示請求的url地址,get方式的引數也在url中
  53:      //第三個參數列示採用非同步還是同步方式互動,true表示非同步
  54:      //GET方式請求的程式碼
  55:      //xmlhttp.open("GET","AJAXServer?name="+userName,true);
  56:   
  57:      //POST方式請求的程式碼
  58:      xmlhttp.open("POST","AJAXServer",true);
  59:      //POST方式需要自己設定http的請求頭
  60:      xmlhttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
  61:      //POST方式傳送資料
  62:      xmlhttp.send("name="+userName);
  63:      
  64:      //4 傳送資料,開始和伺服器端進行互動
  65:      //同步方式下,send這句話會在伺服器設定回來後才執行完
  66:      //非同步方式,send這句話執行晚會立即完成
  67:      
  68:      //GET方式
  69:      //xmlhttp.send(null);
  70:  }
  71:   
  72:  //回撥函式
  73:  function callback(){
  74:     // alert(xmlhttp.readyState);
  75:     //5接收響應資料
  76:     //判斷物件的狀態是互動完成
  77:      if(xmlhttp.readyState==4){
  78:      //判斷http的互動是否成功、
  79:        if(xmlhttp.status==200){
  80:            //獲取伺服器端返回的資料
  81:            //獲取伺服器端輸出的純文字資料
  82:            var responseText = xmlhttp.responseText;
  83:            //將資料顯示在頁面上
  84:            //通過dom方式找到div標籤所對應的元素節點
  85:            var divNode = document.getElementById("result");
  86:            //設定元素節點中的html內容
  87:            divNode.innerHTML=responseText;
  88:        }else
  89:   
  90:        {
  91:            alert("出錯了");
  92:        }
  93:      }
  94:  }

相關文章