jQuery.ajax向后台传送数组问题解决方法版权声明
原创今天重温了一个问题,jQuery.ajax数组被传递到后台,但不会在后台接收值。
前台js方法部分代码如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
//创建一组测试
var boxIds = new Array();
boxIds.push(12182);
boxIds.push(12183);
boxIds.push(12184);
//与后台的交互
$.ajax({
url: "/xxx" ,
type: "GET" ,
data: {
"boxIds" : boxIds,
"boxType" : 0,
"time" : new Date().getTime()
},
success: function (data) {
//do sth...
}
});
后台controller代码(SpringMVC)
1
2
3
4
5
@ResponseBody
@RequestMapping (value = "/box/changeLock" )
public String changeLock( final Long[] boxIds, final int boxType) {
return locker_ChangeLockService.changeLock(boxIds, boxType);
}
查看浏览器中发送的请求,可以发现以下参数:
boxIds[]:223,
boxIds[]:224,
如您所见,该参数的名称为boxIds[]比我们所定义的boxIds也就是说,当传递数组时,它会自动添加到我们的数组名称之后。“[]所以背景不能把它捡起来。
解决方案:
设置jQuery.ajax的tradional属性
1
2
3
4
5
6
7
8
9
10
11
12
13
$.ajax({
url: "/xxx" ,
type: "GET" ,
data: {
"boxIds" : boxIds,
"boxType" : 0,
"time" : new Date().getTime()
},
traditional: true , //背景设在这里true
success: function (data) {
//do sth...
}
});
修改后,重新下发请求,观察浏览器:
请求参数2
这一次,该参数不接受“[]后台可以成功地接收到该阵列。
以上就是本文的全部内容。希望对大家学习有所帮助,也希望大家多支持剧本回家。
版权声明
所有资源都来源于爬虫采集,如有侵权请联系我们,我们将立即删除
itfan123





