使用jQuery框架的ajax技术,在Struts2返回json格式的数据

    刚写的时候 在Action中,写个方法然后在写个String类型的返回值,以告诉 Struts2将跳转到哪个页面。这样写,使用response.getPrintWirter.write()打印json数据 老是在客户端的$.post的那个回调函数里面拿不到。思来想去才发现在相应的Action中方法写了返回值,然后使用Ajax技术请求后,它跳到你在struts.xml配置的哪个相应的result里面去了。

   后来干脆把相应的那个Action里面的相应方法的返回值 写成void了,后来就可以了。

   下面你们看下我今天下午写的这个代码吧。

   JSP页面主要代码(由于主要为了测试,就把js一起写在jsp页面里面了):   

 <script type="text/javascript">
       $(document).ready(function()
       {
         $.post("getProvinces",function(data,textStatus)
         {
            var dataObj=eval("("+data+")");
            for(var i=0;i<dataObj.length;i++)
            {
               var $option=$("<option></option>");
               $option.attr("value",dataObj[i].id);
               $option.text(dataObj[i].name);
               $("#proviceId").append($option);
            }            
         },"json") ;
                
       $("#proviceId").bind("change",function()
       {
           var ids=this.value;
           if(ids==""){return;}
           $.post("getCitys",{pid:ids},function(data,textStatus)
           {
              var dataObj=data;
              $("#cityId option[value!='']").remove();
              for(var i=0;i<dataObj.length;i++)
              {
                 var $option=$("<option></option>");
                 $option.attr("value",dataObj[i].id);
                 $option.text(dataObj[i].name);
                 $("#cityId").append($option);
              }
           },"json")
       });
       });
    </script>

 省份:
      <select name="province" id="proviceId">
         <option value="">----请选择---</option>
      </select>
  市区:
      <select name="city" id="cityId">
         <option value="">----请选择---</option>
      </select>


下面看下Struts2里面相应的Action代码:

    public class ActionAction extends ActionSupport {
private int pid=1;
public int getPid() {
return pid;
}
public void setPid(int pid) {
this.pid = pid;
}

       /**

       *数据初始化(由于主要为了测试,没有连接数据库了,直接将数据保存在java类的静态变量里面)

      */
public void init() {
ListDate.dateC.clear();
Provice p = null;
City c = null;
for (int i = 1; i <= 5; i++) {
p = new Provice();
p.setId(i);
p.setName("广西" + i);
for (int j = 1; j < 6; j++) {
c = new City();
c.setId(j);
c.setName("桂林" + j);
p.getListC().add(c);
}
ListDate.dateC.add(p);
}
}


public void getProvinces() {
init();
List<Provice> listP = new ArrayList<Provice>();
listP = ListDate.dateC;
JsonConfig config = new JsonConfig();
config.setExcludes(new String[] { "listC" });
JSONArray listparray = JSONArray.fromObject(listP, config);
try {
HttpServletResponse response = ServletActionContext.getResponse();
response.setCharacterEncoding("utf-8");
PrintWriter out = response.getWriter();
out.write(listparray.toString());
} catch (IOException e) {
e.printStackTrace();
}
}


public void getCitys() {
System.out.println("进来了吗dd:"+pid);
try {
init();
List<Provice> listP = new ArrayList<Provice>();
listP = ListDate.dateC;
List<City> listC = new ArrayList<City>();
for (Provice p : listP) {
if (p.getId() == this.pid) {
listC = p.getListC();
break;
}
}
JSONArray jsonarry = JSONArray.fromObject(listC);
HttpServletResponse response = ServletActionContext.getResponse();
System.out.println(jsonarry);
response.setCharacterEncoding("utf-8");
response.getWriter().write(jsonarry.toString());
} catch (IOException e) {
e.printStackTrace();
}catch(Exception e)
{
e.printStackTrace();
}
}

}

下面看下struts.xml里面的主要配置:

           <action name="getProvinces" class="com.action.ActionAction" method="getProvinces">
          </action> 
          <action name="getCitys" class="com.action.ActionAction" method="getCitys">
         </action>  


主要关键代码就这些。主要为了提供给在这方面初学者。望高手勿喷!

     

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值