初学AJAX,使用struts+ajax小小尝试一下,出现下面这个问题clearList()执行到
var thandler=document.forms[0].handlerID;
就不执行,请大家帮忙啊;
代码如下
我的action代码如下:
var thandler=document.forms[0].handlerID;
就不执行,请大家帮忙啊;
代码如下
- HTML code
-
<script language="JavaScript"> var XMLHttpReq = false; //创建XMLHttpRequest对象 function createXMLHttpRequest(){ if(window.XMLHttpRequest){ //Mozilla浏览器 XMLHttpReq = new XMLHttpRequest(); } else if(window.ActiveXObject){ //IE浏览器 try{ XMLHttpReq = new ActiveXObject("Msxml2.XMLHTTP"); }catch(e){ try{ XMLHttpReq = new ActiveXObject("Microsoft.XMLHTTP"); }catch(e){} } } } //发送请求函数 function sendRequest(url){ alert("执行到发送"); createXMLHttpRequest(); //调用创建对象方法 XMLHttpReq.open("get",url,true); XMLHttpReq.onreadystatechange = processResponse;//指定响应函数 调用 XMLHttpReq.send(null);//发送请求 alert("发送完毕"); } //处理返回信息函数 function processResponse(){ alert("执行到处理"); if(XMLHttpReq.readyState==4){//代表服务器已经传回所有的信息,可以处理了 if(XMLHttpReq.status==200){ //信息已经成功返回,开始处理信息 updateList(); }else //页面不正常 window.alert("您所请求的页面有异常。"); } alert("处理完毕"); } function refreshList(){ alert("执行到刷新"); var nodeid = document.forms[0].nodeID.value; var node=document.forms[0].nodeID; alert(node); var url = "ajax.do?method=showHandler&nodename="+nodeid; alert(url); sendRequest(url); alert("刷新完毕"); } function updateList(){ alert("执行到更新"); clearList();//清除列表框中列表项函数 var handlers = document.forms[0].handlerID; alert("handlers:"+handlers); var results = XMLHttpReq.responseXML.getElementsByTagName("handlers"); var option=null; for(var i=0;i<results.length;i++){ var name=results[i].firstChild[0].nodeValue; alert("Name"+name); var id=results[i].firstChild[1].nodeValue; alert("value"+value); option=new Option(name,id); handlers.options[i]=option; } alert("更新完毕"); } function clearList(){ alert("执行删除"); var thandler=document.forms[0].handlerID; alert("handler"+handler); //handler.options.length=0; var num= thandler.options.length; num=0; alert("不是空num:"+num); //var kids =handler.options; /*从后向前删除,从第一个开始删除将引起错误*/ /*for(var i=num-1;i>=0;i--){ handler.removeChild(kids[i]); }*/ alert("删除完毕"); } </script> <body> <h1>操作员管理</h1> <html:form action="handlerManager.jsp" onsubmit="confirm('确定执行此操作?')"> <table> <tr> <th> 操作员管理 </th> </tr> <tr> <td> 网点名称 </td> <td> <html:select property="nodeID" onchange="refreshList();"> <html:optionsCollection property="nodes" label="nodeName" value="id"/> </html:select> </td> </tr> <tr> <td> 操作员姓名 </td> <td> <html:select property="handlerID"> </html:select> </td> </tr> <tr> <td> 操作员密码: </td> <td> <html:text property="handlerPassword"></html:text> </td> </tr> <tr> <td> 操作员权限 </td> <td> <html:select property="group"> <html:option value="1">操作员</html:option> <html:option value="2">管理员</html:option> </html:select> </td> </tr> <tr> <td> <html:submit property="edit">删除</html:submit> <html:submit property="edit">修改</html:submit> <html:submit property="edit">禁用</html:submit> </td> <td> <html:submit property="edit">启用</html:submit> <html:submit property="edit">取消</html:submit> <html:button property="">退出</html:button> </td> </tr> </table> </html:form>
我的action代码如下:
- Java code
-
public class AjaxAction extends DispatchAction { /* * Generated Methods */ /** * Method execute * @param mapping * @param form * @param request * @param response * @return ActionForward */ public ActionForward showHandler(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) { System.out.println("执行了AJAX"); try { request.setCharacterEncoding("GBK"); } catch (UnsupportedEncodingException e) { // TODO Auto-generated catch block e.printStackTrace(); } response.setContentType("text/xml;charset=GBK"); response.setHeader("Cache-Control","no-cache"); PrintWriter out = null; try { out = response.getWriter(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } out.println("<?xml version=/"1.0/" encoding=/"GBK/"?>"); out.println("<handlers>"); int nodeID = Integer.parseInt(request.getParameter("nodename")); HandlerBR handlerbr=new HandlerBR(); List list=handlerbr.getHandlerByNode(nodeID); for(int i=0;i<list.size();i++) { Handler handler=(Handler)list.get(i); out.println("<name>"+handler.getHandlerName()+"</name>"); out.println("<value>"+handler.getHandlerId()+"</value>"); } out.println("</handlers>"); out.close(); return null; } }