javascript-XMLHttpRequest

JS方法:
 var xmlhttp;//必定注意是寫在外面的全局變量,我調了一個上午才發現。

 function verify(){
  //使用dom方式獲取文本框中的值
  var userName=document.getElementById("userName").value;
  //如下5個步驟即完成ajax應用的5個關鍵步驟
  //1. 建立XMLHttpRequest對象(最關鍵&複雜的一步)
  //須要針對IE和其餘類型的瀏覽器創建這個對象的不一樣方式寫不一樣代碼
  if(window.XMLHttpRequest){
   xmlhttp=new XMLHttpRequest();//針對mozillar,firefox,opera,safari,ie7,ie8
   //針對某些特定版本的mozillar瀏覽器的bug(主要是調用回調函數時會有問題)進行修正(這一步是保證腳本的健壯性)
   if(xmlhttp.overrideMimeType){
    xmlhttp.overrideMimeType("text/xml");
   }
  }else if(window.ActionXObject){
   //(老師語)爲何這個放在第二個if語句裏呢?
   //(1)針對的對象範圍太窄
   //(2)自身的缺陷或者說原理已被一些人摸透了,有人利用ActionXObject幹了很多壞事(?)因此會被一些有經驗的用戶直接禁掉
   //針對ie6,ie5.5,ie5
   //兩個能夠建立XMLHttpRequest對象的控件名稱,保存在一個js數組中,排在前面的較新
   varactivexName=["MSXML2.XMLHTTP","Microsoft.XMLHTTP"];
   for(var i=0; i<activexName.length; i++){
    try{
     xmlhttp=new ActionXObject(activexName[i]);
     break;
    }catch(e){
    }
   }
   
  }
  //確認XMLHttpRequest對象建立成功(保證腳本的完整性,指開發的時候)
  if(!xmlhttp){
   alert("XMLHttpRequest對象建立視頻!!");
   return;
  }else{
   alert(xmlhttp);
  }
  //2. 註冊回調函數
  //只用函數名,不加括號,是由於該句只是把回調函數名註冊給xmlhttp.onreadystatechange
  //若是加了括號,則是調用函數,而後把該函數的返回值註冊了。
  //xmlhttp狀態每次改變都會從新調用callback方法
  xmlhttp.onreadystatechange=callback;
  //3. 利用open方法設置與服務器的鏈接信息
  xmlhttp.open("GET","AjaxServer?name="+userName,true);//Post方法請自行google百度
//還能夠用Post方法進行傳送,//xmlhttp.open(「POST」,」AjaxServer」,true)
//xmlhttp.setRequestHeader(「Content-Type」,」application/x-www-form-urlencoded」)
  //4. 發送數據,開始和服務端進行交互
  //之因此send(null)是由於第3步中,數據信息都在url裏了,若是是Post方法,send(具體數據)
//如xmlhttp.send(「name」+userName);
  //第3步中最後一個參數若是false,則運行到該句停止,一直等到數據返回;爲true則代碼繼續運行
  xmlhttp.send(null);
 }
 function callback(){
   //5. 接收響應數據(在回調函數中針對不一樣響應狀態進行處理)
   //判斷對象的狀態是交互完成的
  if(xmlhttp.readyState==4){
//0=未初始化,對象以建立,未調用open
//1=open方法調用成功,send方法未調用
//2=send方法已調用,未開始接收數據
//3=正在接收數據,HTTP響應頭信息已經接收,數據還沒有接收完成
//4=完成
   //判斷http的交互是否成功
   if(xmlhttp.status==200){//關於xmlhttp.status請自行google百度
    //獲取服務器端返回數據
    varresponseText=xmlhttp.responseText; //純文本方式,關於其餘方式請自行google百度
    //將數據顯示在頁面上
    //(1)經過Dom方式找到div標籤對應的元素節點
    vardivNode=document.getElementById("result");
    //(2)設置元素節點中的html內容
    divfNode.innerHTML=responseText;
   }else{//出錯信息}
  }
 }

//這裏有一個問題 就是 xmlhttp.open("GET","AjaxServer?name="+userName,true); 中的 AjaxServer 對於IE來講 
//有些問題,交不到 想要的Servlet中去時,能夠在後面加 ?type=nihao 什麼的
//例:xmlhttp.open("GET","/myBoKe/PingLunController",true); 這個不能到PingLunController.java中,調到了主要的servlet中去了。 多是我用了Iframe標籤的 應該注意一下
//  xmlhttp.open("GET","/myBoKe/PingLunController?type=in hao",true); 這樣就能夠了,很奇怪的
 
相關文章
相關標籤/搜索
本站公眾號
   歡迎關注本站公眾號,獲取更多信息