Jquery ajax请求Struts2 action 回来xml数据
Jquery ajax请求Struts2 action 返回xml数据
Jquery 发送ajax请求,action 或servlet 处理请求,并以xml格式返回数据,交给jquery 处理。
1.jquery 发送请求:
2.struts2 action 处理请求
可以有两种方式返回数据
(1)直接在action中输出
struts.xml
(2)把数据输出到页面
request.setAttribute("provinces", list);//前台页面取得数据
jsp页面代码:
返回到页面的配置
Jquery 发送ajax请求,action 或servlet 处理请求,并以xml格式返回数据,交给jquery 处理。
1.jquery 发送请求:
<em>var provinceurl="/Struts2/jquery/selectProvince.action"; $.ajax({ url:provinceurl, type: 'POST', dataType: 'xml', data: {name:"lixueli"}, timeout: 1000, error: function(){ alert('Error loading XML document'); }, success: function(xml){ alert(xml); $(xml).find("province").each(function(){ var provinceId=$(this).children("provinceid").text(); var provinceName=$(this).children("provinceName").text(); var tempOption = document.createElement("option"); tempOption.value = provinceId; tempOption.innerHTML = provinceName; province.append(tempOption); }); } });</em>
2.struts2 action 处理请求
可以有两种方式返回数据
(1)直接在action中输出
public String selectProvince() throws IOException { response.setContentType("text/xml;charset=utf-8"); //(1)一定要在(2)的前面,不然会乱码 response.setCharacterEncoding("UTF-8"); //(2) response.setHeader("Cache-Control", "no-cache"); PrintWriter out=response.getWriter(); //(3)一定要在(1)(2)的后面 ProvinceDAO provinceDAO = new ProvinceDAO(); List<Province> list = provinceDAO.getAllProvince(); StringBuilder sb=new StringBuilder(); sb.append("<?xml version='1.0' encoding='UTF-8'?><provinces>");//最外层节点唯一,不然报错 for(Province p: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(); return null; } 这种方法不用返回结果。
struts.xml
<strong><em><struts> <include file="struts-default.xml"/> <package name="/jquery" extends="struts-default" namespace="/jquery"> <action name="selectProvince" class="com.hyts.business.action.xml.JqueryXmlAction" method="selectProvince"> </action> </package> </struts></em></strong>
(2)把数据输出到页面
request.setAttribute("provinces", list);//前台页面取得数据
jsp页面代码:
<strong><em><?xml version='1.0' encoding='UTF-8'?>//一定放在页面开始位置,否则会报解析错误 <%@ page language="java" contentType="text/xml; charset=UTF-8" pageEncoding="UTF-8"%> <%@page import="com.hyts.util.*,java.util.*"%> <% List<Province> provinces = (List<Province>)request.getAttribute("provinces"); %> <provinces> <% for(Province p:provinces) { %> <province> <provinceid><%=p.getProvinceId()%></provinceid> <provinceName><%=p.getProvinceName()%></provinceName> </province> <% } %> </provinces></em></strong>
返回到页面的配置
<strong><em><struts> <include file="struts-default.xml"/> <package name="/jquery" extends="struts-default" namespace="/jquery"> <action name="selectProvince" class="com.hyts.business.action.xml.JqueryXmlAction" method="selectProvince"> <result name="success">/jqueryxml/provinces.jsp</result>//数据先传递到页面 </action> </package> </struts></em></strong>