1.前言
记录此次ajax部分遇到的一些坑。
2.正文
- ajax传递数组参数。参考文献
方法一:
1.1 使用JSON.stringify 将数组对象转化成json字符串;
var array = ["1", "2"];
$.ajax({
type : 'POST',
url: path + '/check/testPost',
contentType : "application/json" ,
data : JSON.stringify(array),
success : function(data) {
}
});
1.2 后台处理
@RequestMapping(value = "/testPost", method = {RequestMethod.POST})
public void testPost(@RequestBody String[] array) throws IOException {
for (String string : array) {
System.out.println(string);
}
return ;
}
方法二:
2.1 前端不做处理:
var array = ["1", "2"];
$.ajax({
type : 'POST',
url: path + '/check/testPost',
contentType: "application/x-www-form-urlencoded",
data: {"array": array},
success : function(data) {
}
});
2.2 后台处理
@RequestMapping(value = "/testPost", method = {RequestMethod.POST})
public void testPost(HttpServletRequest req) throws IOException {
String[] array = req.getParameterValues("array[]");
for (String string : array) {
System.out.println(string);
}
return ;
}
这里要善于使用浏览器的network进行调试排错。上面的方法是没有问题的,但是我的controller就是没执行。我在网上查了很多ajax不执行,众说纷纭。我这里说下我最后的问题。
- url填写错误
一开始我的url为,url: "/file/dependency",
,这里我打开network一查看发现地址错了,需要回退一级。修改为:url: "../file/dependency",
- 继续执行,看network中的状态码为415,参考文献ajax状态码415解决方案
在进行ajax响应后台的数据的时候,出现了415异常
原因是没有maven中没有响应的坐标依赖,没有办法对发送的json进行解析,
导入相关的依赖解决了问题
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.9.0</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-core</artifactId>
<version>2.9.0</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-annotations</artifactId>
<version>2.9.0</version>
</dependency>
3.我的截图
我最后的项目截图
1.前端
2. controller
3.测试结果