電力項目十八--DOM對象的ajax

來源:互聯網
上載者:User

標籤:pen   定義   添加   doc   sys   for   json   處理   沒有   

Ajax操作的核心對象:xmlreq = new XMLHttpRequest();

第一步:在dictionaryIndex.jsp中添加:

<script type="text/javascript" src="${pageContext.request.contextPath }/script/pub.js"></script>

第二步:調用js的代碼:實現:

Pub.submitActionWithForm:    * 參數一:表單Form2的名稱    * 參數二:表示URL串連    * 參數三:表單Form1的名稱    ajax的封裝:    1:在dictionaryIndex.jsp中存在2個表單Form1和Form2    2:使用ajax傳遞表單Form1中的元素作為參數,在伺服器端進行處理,將處理後的結果放置dictionaryEdit.jsp中    3:將dictionaryEdit.jsp中的全部內容放置dictionaryIndex.jsp頁面的Form2中    效果:非同步效果,一個頁面表單Form1中的內容不發生變化,Form2中的內容發生變化

 

Pub.submitActionWithForm(‘Form2‘,‘${pageContext.request.contextPath }/system/elecSystemDDLAction_edit.do‘,‘Form1‘);

 

第三步:在pub.js中定義:

步驟一:(Pub.submitActionWithForm)

/*** * domId:表單Form2的名稱 * action:表示URL串連 * sForm:表單Form1的名稱 */Pub.submitActionWithForm=function(domId,action,sForm){  /**第一步:建立Ajax引擎對象*/  var req = Pub.newXMLHttpRequest();  /**第二步:req.onreadystatechange表示事件處理函數(相當於一個監聽),用來監聽用戶端與伺服器端的串連狀態*/  var handlerFunction = Pub.getReadyStateHandler(req, domId,Pub.handleResponse);  req.onreadystatechange = handlerFunction;  /**第三步:開啟一個串連,要求:如果是POST請求,需要設定一個頭部資訊,否則此時不能使用req.send()方法向伺服器發送資料*/  req.open("POST", action, true);  req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");   /**第四步:向伺服器發送資料,格式:name=張三&age=28*/  var str = Pub.getParams2Str(sForm);   //傳遞表單Form1中的元素作為參數給伺服器  req.send(str);}

步驟二:建立ajax引擎(Pub.newXMLHttpRequest)

/** * 建立ajax引擎 */Pub.newXMLHttpRequest=function newXMLHttpRequest() {  var xmlreq = false;  if (window.XMLHttpRequest) {    xmlreq = new XMLHttpRequest();  } else if (window.ActiveXObject) {         try {            xmlreq = new ActiveXObject("Msxml2.XMLHTTP");    } catch (e1) {             try {              xmlreq = new ActiveXObject("Microsoft.XMLHTTP");      } catch (e2) {                  alert(e2);      }    }  }  return xmlreq;}

 

步驟三:傳遞表單Form1中的元素作為參數(Pub.getParams2Str)

/** *  * @param sForm:傳遞表單Form1的名稱 * @returns {String}:使用ajax返回伺服器端的參數,傳遞的就是表單Form1中元素的參數 */Pub.getParams2Str=function getParams2Str(sForm){ var strDiv="";       try {    var objForm=document.forms[sForm];  if (!objForm)    return strDiv;  var elt,sName,sValue;  for (var fld = 0; fld < objForm.elements.length; fld++) {      elt = objForm.elements[fld];          sName=elt.name;      sValue=""+elt.value;      if(fld==objForm.elements.length-1)          strDiv=strDiv + sName+"="+sValue+"";       else             strDiv=strDiv + sName+"="+sValue+"&";   }  }  catch (ex) {    return strDiv;    }    return strDiv;}

 

步驟四:接收伺服器端返回的結果(Pub.getReadyStateHandler)

/** *  * @param req:引擎對象 * @param eleid:表單Form2的名稱 * @param responseXmlHandler:Pub.handleResponse(函數體) * @returns {Function} */Pub.getReadyStateHandler =function getReadyStateHandler(req, eleid,responseXmlHandler) {    return function () {    /**     * req.readyState:用來監聽用戶端與伺服器端的串連狀態     * 0:表示此時用戶端沒有調用open()方法     * 1:表示用戶端執行open方法,但是send方法沒有執行     * 2:open方法執行,send方法也執行     * 3:伺服器開始處理資料,並返回資料     * 4:返回資料成功,只有4這個狀態,才能擷取伺服器端返回的結果     */    if (req.readyState == 4) {       /**        * req.status:表示java的狀態代碼        * 404:路徑錯誤        * 500:伺服器異常        * 200:表示沒有異常,正常訪問資料,只有200這個狀態的時候,才能擷取伺服器端返回的結果        */      if (req.status == 200) {          /**           * req.responseText:擷取伺服器端返回的結果,返回的是文本的結果(包括:字串,json資料)           * req.responseXML:擷取伺服器端返回的結果,返回的是XML資料的結果           */        responseXmlHandler(req.responseText,eleid);       } else {         alert("HTTP error: "+req.status);        return false;      }    }  }

 

步驟五:將返回的結果dictionaryEdit.jsp,並放置到dictionaryIndex.jsp的Form2中(Pub.handleResponse)

/*** @param data:伺服器返回的結果 * @param eleid:表單Form2的名稱 */Pub.handleResponse= function handleResponse(data,eleid){      //擷取表單Form2的對象      var ele =document.getElementById(eleid);      //將返回的結果放置到表單Form2的元素中      ele.innerHTML = data;    }

對應的頁面dictionaryEdit.jsp 

 查詢方法寫完,但是頁面上還是沒有顯示出來 。

電力項目十八--DOM對象的ajax

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.