jquery+struts+ajax

1.以json的方式返回数据:

http://669341085.iteye.com/admin/blogs/761665

 

2.以xml方式返回数据

转自:

http://lixueli26.iteye.com/blog/698946

 

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

1.jquery 发送请求:

 

Js代码   收藏代码
  1. <em>var provinceurl="/Struts2/jquery/selectProvince.action";  
  2.  $.ajax({  
  3.       url:provinceurl,      
  4.        type: 'POST',   
  5.        dataType: 'xml',  
  6.        data: {name:"lixueli"},                  
  7.        timeout: 1000,                             
  8.        error: function(){                        
  9.        alert('Error loading XML document');   
  10.        },   
  11.        success: function(xml){              
  12.         alert(xml);  
  13.         $(xml).find("province").each(function(){                              
  14.             var provinceId=$(this).children("provinceid").text();         
  15.             var provinceName=$(this).children("provinceName").text();  
  16.             var tempOption = document.createElement("option");   
  17.        tempOption.value = provinceId;  
  18.        tempOption.innerHTML  = provinceName;   
  19.        province.append(tempOption);  
  20.         });  
  21.       }   
  22.   });</em>  

 

 

2.struts2 action 处理请求

  可以有两种方式返回数据

  (1)直接在action中输出

    

Java代码   收藏代码
  1.  public String selectProvince() throws  IOException {  
  2.     response.setContentType("text/xml;charset=utf-8"); //(1)一定要在(2)的前面,不然会乱码  
  3.     response.setCharacterEncoding("UTF-8"); //(2)  
  4.     response.setHeader("Cache-Control""no-cache");   
  5.     PrintWriter out=response.getWriter();         //(3)一定要在(1)(2)的后面  
  6.     ProvinceDAO provinceDAO = new ProvinceDAO();  
  7.     List<Province> list = provinceDAO.getAllProvince();  
  8.    StringBuilder sb=new StringBuilder();  
  9.    sb.append("<?xml version='1.0' encoding='UTF-8'?><provinces>");//最外层节点唯一,不然报错  
  10.    for(Province p:list)  
  11.   {  
  12.     sb.append("<province>");  
  13.     sb.append("<provinceid>"+p.getProvinceId()+"</provinceid>");  
  14.     sb.append("<provinceName>"+p.getProvinceName()+"</provinceName>");  
  15.     sb.append("</province>");  
  16.   }  
  17.   sb.append("</provinces>");  
  18.   out.print(sb.toString());  
  19.   out.flush();  
  20.  out.close();  
  21. return null;  
  22. }  
   

 

这种方法不用返回结果。

Xml代码   收藏代码
  1. <strong><em><struts>  
  2.   <include file="struts-default.xml"/>  
  3.   <package name="/jquery" extends="struts-default" namespace="/jquery">  
  4.   <action name="selectProvince" class="com.hyts.business.action.xml.JqueryXmlAction" method="selectProvince">  
  5.    </action>  
  6.  </package>  
  7. </struts></em></strong>  

 

 

 (2)把数据输出到页面

 request.setAttribute("provinces", list);//前台页面取得数据

 jsp页面代码:

Html代码   收藏代码
  1. <strong><em><?xml version='1.0' encoding='UTF-8'?>//一定放在页面开始位置,否则会报解析错误  
  2. <%@ page language="java" contentType="text/xml; charset=UTF-8" pageEncoding="UTF-8"%>  
  3. <%@page import="com.hyts.util.*,java.util.*"%>  
  4.  <%  
  5.     List<Province> provinces = (List<Province>)request.getAttribute("provinces");  
  6.  %>  
  7. <provinces>  
  8. <%  
  9.    for(Province p:provinces)  
  10.    {  
  11. %>  
  12.    <province>  
  13.      <provinceid><%=p.getProvinceId()%></provinceid>  
  14.      <provinceName><%=p.getProvinceName()%></provinceName>  
  15.    </province>  
  16. <%    
  17.    }  
  18. %>  
  19.       
  20. </provinces></em></strong>  

 

 

返回到页面的配置

struts.xml配置

Xml代码   收藏代码
  1. <strong><em><struts>  
  2.   <include file="struts-default.xml"/>  
  3.   <package name="/jquery" extends="struts-default" namespace="/jquery">  
  4.   <action name="selectProvince" class="com.hyts.business.action.xml.JqueryXmlAction" method="selectProvince">  
  5.      <result name="success">/jqueryxml/provinces.jsp</result>//数据先传递到页面  
  6.   </action>  
  7.  </package>  
  8. </struts></em></strong>  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值