JQuery Ajax向后台传递数组

需求:

在JS中向后台传递数组参数

分析:

JS中的数组是弱类型的可以放任何类型(对象、基本类型),但是如果数组中放的是对象类型,传递到后台是显示的只能是对象字符串--[object Object],原因如下:
在后台接收的时候,只能用request来接收,request.getParameterValues()方法返回的是一个String[],所以,应该是在前台传输的时候调用了对象的toString()方法,那么如果依然想传递对象怎么办?凉拌!
但是可以使用JSON字符串来实现,在后台把JSON字符串解析成JAVA对象。
也许,你要说如果是复合对象怎么办,比如如下:
Java代码 复制代码 收藏代码
  1. public class Person {
  2. private String username;
  3. private String password;
  4. private Address addr;
  5. }
public class Person {
	private String username;
	private String password;
	private Address addr;
}

Person对象里有个Address类型的addr属性,没关系,任何对象最终用到的属性值都是基本数据类型,只需要使用对应的包装类型parseInt、或者parseXXX解析即可。


实现:

OK,原理就是这么个。先看JS如何写:
Java代码 复制代码 收藏代码
  1. var as = [];
  2. var temp = [];
  3. for ( var int = 0; int < 5; int++) {
  4. temp.push('{"k":');
  5. temp.push(int);
  6. temp.push(',"v":');
  7. temp.push(int);
  8. temp.push('}');
  9. as.push(temp.join(""));
  10. }
  11. //Jquery中的方法,具体参考Jquery API
  12. $.post(
  13. "servlet/AjaxServlet?m=putWarningRule",{"aa":as}
  14. );
var as = [];
var temp = [];
for ( var int = 0; int < 5; int++) {
   temp.push('{"k":');
   temp.push(int);
   temp.push(',"v":');
   temp.push(int);
   temp.push('}');
   as.push(temp.join(""));
}
//Jquery中的方法,具体参考Jquery API
$.post(
  "servlet/AjaxServlet?m=putWarningRule",{"aa":as}
);

最终拼成的串就是如下样式,(只作举例)
Java代码 复制代码 收藏代码
  1. {"k":0,"v":0}
{"k":0,"v":0}

后台接收,不讨论任何框架,只需要HttpServletRequest即可
Java代码 复制代码 收藏代码
  1. String[] jsonArr = request.getParameterValues("aa[]");
String[] jsonArr = request.getParameterValues("aa[]");

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值