Jquery 发送ajax请求,action xml…

来源:互联网 发布:餐饮数据流程图例题 编辑:程序博客网 时间:2024/05/03 00:19

zzz


Jquery 发送ajax请求,action 或servlet 处理请求,并以xml格式返回数据,交给jquery 处理。


1.jquery 发送请求:

<EM>varprovinceurl="/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(){                           
           varprovinceId=$(this).children("provinceid").text();      
           var provinceName=$(this).children("provinceName").text();
           var tempOption = document_createElement_x("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");
    PrintWriterout=response.getWriter();        //(3)一定要在(1)(2)的后面
    ProvinceDAOprovinceDAO = new ProvinceDAO();
   List<Province> list =provinceDAO.getAllProvince();
   StringBuilder sb=newStringBuilder();
  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;
}

这种方法不用返回结果。

<STRONG><EM><struts>
  <includefile="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><?xmlversion='1.0'encoding='UTF-8'?>//一定放在页面开始位置,否则会报解析错误
<%@ page language="java" contentType="text/xml;charset=UTF-8" pageEncoding="UTF-8"%>
<%@pageimport="com.hyts.util.*,java.util.*"%>
 <%
   List<Province> provinces =(List<Province>)request.getAttribute("provinces");
 %>
<provinces>
<%
   for(Provincep:provinces)
   {
%>
  <province>
    <provinceid><%=p.getProvinceId()%></provinceid>
    <provinceName><%=p.getProvinceName()%></provinceName>
  </province>
<% 
   }
%>
   
</provinces></EM></STRONG>

返回到页面的配置

struts.xml配置

<STRONG><EM><struts>
  <includefile="struts-default.xml"/>
  <package name="/jquery"extends="struts-default" namespace="/jquery">
  <action name="selectProvince"class="com.hyts.business.action.xml.JqueryXmlAction"method="selectProvince">
    <resultname="success">/jqueryxml/provinces.jsp</result>//数据先传递到页面
  </action>
 </package>
</struts></EM></STRONG>