当前位置: 移动技术网 > IT编程>开发语言>JavaScript > jQuery.ajax向后台传递数组问题的解决方法

jQuery.ajax向后台传递数组问题的解决方法

2018年05月02日  | 移动技术网IT编程  | 我要评论

今天重温了一个问题,jquery.ajax向后台传递一个数组,而在后台接收不到该值。

前台js方法部分代码如下:

//创建一个测试数组
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)

@responsebody
@requestmapping(value = "/box/changelock")
public string changelock(final long[] boxids, final int boxtype) {
  return locker_changelockservice.changelock(boxids, boxtype);
}

观察浏览器中发送的请求,可以发现参数如下:

可以看到,参数的名字为boxids[]而不是我们所定义的boxids,也就是说,当传递数组时,会在我们的数组名称后自动加上”[]”,所以后台接不到。

解决办法:

设置jquery.ajax的tradional属性

$.ajax({
  url: "/xxx",
  type: "get",
  data: {
    "boxids": boxids,
    "boxtype": 0,
    "time": new date().gettime()
  },
  traditional: true,//这里设置为true
  success: function(data) {
    //do sth...
  }
});

修改之后重新发出请求,观察浏览器:

请求参数2

这次参数不带”[]”了,并且后台可以成功接收到该数组。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持移动技术网。

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网