码迷,mamicode.com
首页 > 编程语言 > 详细

使用ajax在前后端传递数组

时间:2016-04-23 16:33:22      阅读:499      评论:0      收藏:0      [点我收藏+]

标签:

我们都知道JSON作为前后端都兼容的数据格式,被很好的用于复杂数据的传输,特别是异步提交当中。当我们要将前端的js数组提交到后端并转化为list,继而又需要将后端的list传到前端转化为js数组的时候,JSON作为中间过渡的格式,必不可少。在此详细总结下。

编程组件 Struts2, FastJson, LigerListBox, AjaxFormSubmit.

第一, 将List数据传递给前端,形成一个JS数组

首先在传到前端的Bean里增加一个menuListJson属性,传递之前把List数据转换为json字符串付给这个属性

String menuJson = JSON.toJSONString(accessProfile.getMenuList());
accessProfile.setMenuListJson(menuJson);

 放入requestAttribute,以便前端JSTL能够取得该Bean

ServletActionContext.getRequest().setAttribute("profile", accessProfile);

 前端页面进而可以用如下语法来把json转换为js数组

var menuList = JSON.parse(‘${profile.menuListJson}‘);

 第二,将JS数组提交到后端,并转化为List对象,此处异步提交表格,使用了JQuery Form Validation插件

首先我们需要在<form></form>包裹中添加一个hidden标签, profile是struts2 action中定义的一个私有实体对象,并匹配有get,set方法,ognl会通过标签的name属性调用set方法将value值付给menuListJson属性。

<input type="hidden" id="menuList" name="profile.menuListJson" value=‘‘/>

Ajax提交部分的代码如下

        $("#form1").validate({
            submitHandler : function(form) {
                $(form).ajaxSubmit({
                    beforeSubmit : showRequest,
                    success : showResponse,
                    url : ‘<c:url value="doModify.action"/>‘,
                    dataType : ‘json‘,
                    type : ‘post‘,
                    timeout : 10000
                });
            }
        });

关键点是对于接收到的json数据(代表着js数组),我们使用fastjson的parse方法转换为list

List<MenuTestBean> menuList=new ArrayList<MenuTestBean>(JSONArray.parseArray(profile.getMenuListJson(),MenuTestBean.class));
profile.setMenuList(menuList);

由此,完成了数组的前后端转换。

 

使用ajax在前后端传递数组

标签:

原文地址:http://www.cnblogs.com/sengao/p/5424857.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!