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. }

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. );

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

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

posted on 2013-02-16 19:30  蜜雪薇琪  阅读(498)  评论(0编辑  收藏  举报