javascript向后台传送数组参数

本文介绍了前后端交互中数组参数的两种有效传递方法:一种是将JavaScript数组转换为逗号分隔的字符串;另一种是利用request.getParameterValues方法直接传递多个同名参数。

我们在传送参数时,经常会碰到向后台传送一些相同属性的参数,最好的选择是采用数组的方式。当我们向后台传送时只需要在javascript中正常定义并使用数组,将其作为参数向后台传递:

                   var arry= new Array();

                   arry[0] = "102";

                   arry[1] = "103";

                   arry[2] = "104";

      url = "test.jsp?arry="+arry;

 

在后台的接受方法:

                  String arry = request.getParmeter("arry");

                  String[] par = arry.split(",");

此时的par就变为了一个java中的数组。其中arry的值为"102,103,104"也就是说在传送的过程中,浏览器自动将javascript型的数组参数转化为了以逗号分隔的字符串,我们只需要在后台将该字符串取出,并按照逗号分割为相应的数组即可。

 

另外,在网上见过使用json的,感觉不太爽。也有用request.getParmeterValues方法的,具体使用如下:

               在前台使用同一个参数并多次赋值传递:

                             url="test.jsp?arry=102&arry=103&arry=104"

               在后台取出:

                            String arry[] = request.getParmeterValues("arry");

              此时的arry的值便是{102,103,104}

具体方式根据自己的习惯选用吧!

后端接收前端传送数组有多种方法,以下是一些常见的情形及对应方法: ### 使用 @RequestParam 接收 URL 编码的数组JSP 页面中使用 jQuery 发送数组,并在后端使用 @RequestParam 接收。需要通过 URL 编码的方式将数组传递到后端。例如在 JSP 页面定义 jQuery 代码进行数组发送,后端使用 @RequestParam 接收 [^1]。 ### 接收前端直接发送的数组 前端使用 jQuery 的 `$.ajax` 方法直接发送数组,示例代码如下: ```javascript $("#toBtn1").click(function () { $.ajax({ url: "test/request/body1.json", method: "post", data: { "empIdArray": [2, 3, 15] }, dataType: "json" }); }); ``` 后端可以根据此格式编写相应的接收代码 [^2]。 ### 接收前端以不同方式处理后传送数组 前端向后台传送数组参数有三种方法,对应的后端接收方式分别如下: - **方法一:数组转化成字符串** 前端代码将数组转化成字符串后传字符串到后台: ```javascript $.post('../clientController/reserveRooms.action', {'room_nos': room_nos.join(',')}, function (flag) { alert(flag) }); ``` 后端需要将接收到的字符串再解析成数组。 - **方法二:数组转化成 JSON 字符串** 前端代码将数组转化成 JSON 字符串后传 JSON 字符串到后台: ```javascript $.post('../clientController/reserveRooms.action', {'room_nos': JSON.stringify(room_nos)}, function (flag) { alert(flag) }); ``` 后端需要将接收到的 JSON 字符串解析成数组。 - **方法三:通过设置 traditional 属性为 true 直接传递数组** 前端代码通过设置 `traditional` 属性为 `true` 直接传递数组: ```javascript $.ajax({ url: '../clientController/reserveRooms.action', type: 'post', data: {'room_nos': room_nos}, traditional: true, success: function (flag) { alert(flag) } }); ``` 后端可以直接接收数组 [^3]。 ### 使用 @RequestBody 接收复杂 JSON 数组 当前端发送 `application/json` 类型的复杂 JSON 数据(包含数组)时,SpringMVC 可以使用 `@RequestBody` 进行接收。例如前端要传递一个部门信息,部门里有多个人,后端需要设计对应的 Java 实体类来接收,示例实体类如下: ```java public class Dept { private String name; private String addr; private List<User> users; // Get/Set方法此处省略... } public class User { private String name; private int age; // Get/Set省略... } ``` 后端使用 `@RequestBody` 接收该 JSON 数据并映射到 `Dept` 实体类上 [^4]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值