Jquery 发送ajax请求,action 或servlet 处理请求,并以xml格式返回数据,交给jquery 处理。
1.jquery 发送请求:
- <em>varprovinceurl="/Struts2/jquery/selectProvince.action";
- $.ajax({
- url:provinceurl,
- type:'POST',250)"> dataType:'xml',250)"> data:{name:"lixueli"},250)"> timeout:1000,250)"> error:function(){
- alert('ErrorloadingXMLdocument');
- },250)"> success:function(xml){
- alert(xml);
- $(xml).find("province").each( varprovinceId=$(this).children("provinceid").text();
- varprovinceName=$(this).children("provinceName").text();
- vartempOption=document.createElement("option");
- tempOption.value=provinceId;
- tempOption.innerHTML=provinceName;
- province.append(tempOption);
- });
- }
- });</em>
2.struts2 action 处理请求
可以有两种方式返回数据
(1)直接在action中输出
- publicStringselectProvince()throwsIOException{
- response.setContentType("text/xml;charset=utf-8");//(1)一定要在(2)的前面,不然会乱码
- response.setCharacterEncoding("UTF-8");//(2)
- response.setHeader("Cache-Control","no-cache");
- PrintWriterout=response.getWriter();//(3)一定要在(1)(2)的后面
- ProvinceDAOprovinceDAO=newProvinceDAO();
- List<Province>list=provinceDAO.getAllProvince();
- StringBuildersb=newStringBuilder();
- sb.append("<?xmlversion='1.0'encoding='UTF-8'?><provinces>");//最外层节点唯一,不然报错
- for(Provincep:list)
- {
- sb.append("<province>");
- sb.append("<provinceid>"+p.getProvinceId()+"</provinceid>");
- sb.append("<provinceName>"+p.getProvinceName()+"</provinceName>");
- sb.append("</province>");
- sb.append("</provinces>");
- out.print(sb.toString());
- out.flush();
- out.close();
- returnnull;
- }
这种方法不用返回结果。
- <strong>emstruts>
- includefile="struts-default.xml"/>
- packagename="/jquery"extends="struts-default"namespace="/jquery"actionname="selectProvince"class="com.hyts.business.action.xml.JqueryXmlAction"method="selectProvince"</actionpackage>
request.setAttribute("provinces",list@H_815_404@);//前台页面取得数据