欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

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

程序员文章站 2022-06-11 14:23:26
今天重温了一个问题,jquery.ajax向后台传递一个数组,而在后台接收不到该值。 前台js方法部分代码如下: //创建一个测试数组 var boxids...

今天重温了一个问题,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);
}

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

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

可以看到,参数的名字为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...
  }
});

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

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

请求参数2

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

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