首页 > 代码库 > 电力项目十八--DOM对象的ajax
电力项目十八--DOM对象的ajax
Ajax操作的核心对象:xmlreq = new XMLHttpRequest();
第一步:在dictionaryIndex.jsp中添加:
<script type="text/javascript" src=http://www.mamicode.com/"${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个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。