关于Ajax无法正常传输数组类型的数据
问题代码
ajax请求
function SendArrays() {
var username = ["小明","小红","小亮","小惠"];
$.ajax({
type:"POST",
url:"${pageContext.request.contextPath}/user/send.do",
data:{"username":username},
dataType:"json",
success:(function (data) {
alert(data);
})
})
}
后台接收
@RequestMapping(value = {"/send.do"})
public ModelAndView send(String[] username){
System.out.println(username);
return null;
}
输出结果
原因是:
Query会调用jQuery.param序列化参数,jQuery.param( obj, traditional ),默认的话,traditional为false,即jquery会深度序列化参数对象,以适应如PHP和Ruby on Rails框架,但servelt api无法处理,我们可以通过设置traditional 为true阻止深度序列化。
解决方法:
1、增加ajax的属性
traditional:true,
2、将数组数据转会为Json格式
data:{“username”:JSON.stringify(username)},
参考文章
Ajax提交数组参数会有问题