jquery ajax 向后台传递数组参数示例
在JavaScript中向后台传递数组参数时,如果数组中包含对象类型,当传递到后台时通常只能看到"[object Object]"这样的对象字符串形式。这种情况背后的原因是在后台接收时,通常通过HTTP请求(如request)来接收数据,而request.getParameterValues()方法返回的是一个String数组。在传输过程中,对象的toString()方法会被调用,将对象转化为字符串。
那么,如果想要传递对象数组到后台,应该怎么办呢?一种解决方案是使用JSON字符串。在前端,将对象数组转化为JSON字符串,然后将其传递给后台。在后台,再将这个JSON字符串成相应的Java对象。这种方法可以处理复杂的对象结构,如包含其他对象的对象。
具体实现方式如下:
在JavaScript中,你可以创建一个空数组,然后循环创建JSON字符串并添加到数组中。例如:
```javascript
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('}'); // 创建JSON字符串并添加到temp数组中
as.push(temp.join("")); // 将temp数组转化为字符串并添加到as数组中
}
// 使用jQuery的$.post方法发送请求
$.post("servlet/AjaxServlet?m=putWarningRule", {"aa[]": as}); // 注意参数名为"aa[]"
```
在后台,你可以使用HttpServletRequest来接收这些参数。例如:
```java
String[] jsonArr = request.getParameterValues("aa[]"); // 接收参数
// 接下来可以将jsonArr中的每个元素为JSON对象
```
为了更清晰地了解请求中所有的参数,你可以在后台打印所有的参数名称和值。例如:
```java
Enumeration
while (names.hasMoreElements()) {
String paramName = names.nextElement(); // 获取参数名称
String paramValue = request.getParameter(paramName); // 获取参数值
System.out.println(paramName + " : " + paramValue); // 打印参数名称和值
}
```
至于如何将JSON字符串转化为Java对象(POJO),你可以使用诸如Gson或Jackson等库来轻松实现。这样,你就可以在后台接收到JavaScript传递的对象数组,并将其为Java对象进行处理了。我使用jsontools-core-1.7.jar这个强大的Java库来处理JSON数据。这个jar包依赖于antlr-2.7.7.jar,我从代码库中下载并导入classpath。在我的项目中,我编写了一个工具类,其中包含两个核心方法,它们能帮我轻松地将对象转换为JSON字符串,以及将JSON字符串转回为对象。
让我们看看如何将对象转换为JSON格式的字符串。这个方法非常简单直观。只需传入一个对象作为参数,它就会返回一个JSON格式的字符串。如果转换过程中发生错误,它会捕获异常并返回null。
```java
public static String toJSONAsString(Object obj){
try {
return JSONMapper.toJSON(obj).render(false);
} catch (MapperException e) {
e.printStackTrace();
}
return null;
}
```
接下来,我还有一个方法可以将JSON字符串转换回对象。这个方法需要传入一个JSON字符串和一个目标类,然后返回转换后的对象。这个过程也不会有问题,除非在JSON时发生错误。
```java
@SuppressWarnings("unchecked")
public static
JSONValue jv = new JSONParser(new StringReader(jsonStr)).nextValue();
return (T) JSONMapper.toJava(jv,targetClass);
}
```
为了测试这两个方法,我创建了一个名为Person的类,并编写了一个简单的main方法来演示如何使用这些工具方法。我创建了一个新的Person对象,将其转换为JSON字符串,然后再将JSON字符串转回为Person对象,最后打印出转换后的对象的属性。这个过程非常顺畅。
在处理请求并获取到值后,我会遍历数组并对每个元素进行转换。例如,我可以使用jsonToObject方法将jsonArr数组的第一个元素转换为Person对象。在处理过程中如果遇到任何问题,我会及时捕获并处理异常。这个工具类为我提供了强大的支持,使我能更轻松地处理JSON数据。我对它的表现感到非常满意。这个工具类不仅易于使用,而且非常高效。如果你正在寻找一种处理JSON数据的好方法,我强烈推荐你试试这个工具类。
编程语言
- jquery ajax 向后台传递数组参数示例
- 3分钟掌握常用的JS操作JSON方法总结
- JavaScript设计模式之建造者模式实例教程
- PHP实现上传文件并存进数据库的方法
- php 策略模式原理与应用深入理解
- PHP时间类完整实例(非常实用)
- php编写的抽奖程序中奖概率算法
- 百度地图api如何使用
- PHP Session ID的实现原理与实例
- PHP+Mysql+Ajax实现淘宝客服或阿里旺旺聊天功能(前
- 直接保存URL图像或网页到服务器本地的类
- Mysql事务处理详解
- js实现iGoogleDivDrag模块拖动层拖动特效的方法
- 浅析php中如何在有限的内存中读取大文件
- 浅谈js数据类型判断与数组判断
- response.end的优缺点介绍