问题描述
请大家指点一下······谢谢!
解决方案
楼主,这个很容易。我不用任何AJAX框架给你一个例子,比如选了一个组织,需要连动得到该组织的用户:这里是个JSP页面,中间的代码省略了,<html:html>……<html:select name="xxxForm" property="organID" onchange="queryUsers();"> <html:optionsCollection name="xxxForm" property="orgs" label="orgname" value="organid" /> </html:select>……</html:html><script LANGUAGE="JavaScript"> ; queryUsers(); //查询用户function queryUsers(){ //定义了一个函数,用来查询某机构下的用户 if(!objRequest){ ajaxInit(); } var act="userAction.do"; //这里就是你的UserAction实例名 var method="post"; var orgainid=document.all["organID"].value; //获取你选的机构ID //Url content var content="action=queryOrgUser&organID="+orgainid; ajaxProcessBase(act,method,content,dealOrgUser); //dealOrgUser 函数为处理函数,需要定义}function dealOrgUser(){ //定义处理返回信息的函数 if(isAjax()){ eval(objRequest.responseText); }}//--></script>下面是 AJAX JS 部分:var objRequest;var action = "";//请求路径var method = "";//访问方法如get,post等var formcontent = "";//提交的保单数据function ajaxInit() { try { objRequest = new ActiveXObject("Microsoft.XMLHTTP"); } catch(e) { try { objRequest = new ActiveXObject("Msxml2.XMLHTTP"); } catch(ex) { try { objRequest = new XMLHttpRequest(); } catch(exc) { alert("浏览器不支持Ajax,可能会导致某些功能不能使用!"); objRequest = false; } } } }function ajaxProcessBase(act,met,content,fuctionProcess){ action=act; method=met; formcontent=content; if(objRequest){ objRequest.open(method, action, true); objRequest.onreadystatechange = fuctionProcess; if(method == "post"){ objRequest.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); } formcontent = formcontent != "" ? formcontent : null; objRequest.send(formcontent); } }//判断是否请求成功function isAjax() { if(objRequest.readyState == 4){ if(objRequest.status == 200){ return true; } else { alert("Problem: "+objRequest.statusText); } } return false; }下面是Struts action里面的一段:String action = form.getAction();……if (action.equals("queryOrgUser")) { //查找一个公估组织下面的所有公估师 Collection col = manager.queryUser(form.getOrganID()); StringBuffer sb = new StringBuffer(); httpServletResponse.setContentType("text/xml;charset=GBK"); httpServletResponse.setHeader("Cache-Control", "no-cache"); java.io.PrintWriter out = httpServletResponse.getWriter(); sb.append(" var sel= document.all['userid'] ; rn"); sb.append(" sel.options.length=0; rn"); java.util.Iterator it = col.iterator(); User user= null; while (it.hasNext()) { user = (User) it.next(); sb.append("var option=new Option('" + user.getName().trim() + "','" + user.getUserid() + "');rn"); sb.append(" try{ rn"); sb.append(" sel.add(option); rn"); sb.append("}catch(e){ } ;rn "); } System.out.println(sb.toString()); out.print(sb.toString()); out.flush(); out.close(); return null; }……这个是我以前的一个从项目中摘出来的,绝对是有效的。