今天重温了一个问题,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...
}
});
修改之后重新发出请求,观察浏览器:


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

jQuery.ajax向后台传递数组问题的更多相关文章

  1. 【转】jQuery.ajax向后台传递数组问题

    $.ajax({ url: "/xxx", type: "GET", data: { "boxIds": boxIds, "box ...

  2. ajax向后台传递数组参数并将后台响应的数据赋值给一个变量供其它插件使用

    1.在js中封装ajax向后台传递数组参数函数 //combogrid * * @Description 封装ajax向后台传递数组参数并将后台响应的数据赋值给一个变量方便其他插件使用该数据函数 * ...

  3. .ajax向后台传递数组(转)

    js部分代码 //创建一个测试数组 var boxIds = new Array(); boxIds.push(12182); boxIds.push(12183); boxIds.push(1218 ...

  4. ajax向后台传递数组

    $.ajax({ traditional: true//这个设置为true,data:{"steps":["qwe","asd"," ...

  5. js ajax 向后台传递数组

    //定义数组 var _arrays = []; for (var i = 0; i < 10; i++) { _arrays.push(i); } //post $.post(href, {l ...

  6. ajax如何向后台传递数组,在后台该如何接收的问题(项目积累)

    一.后台如何接收从前台接收的数组: 使用request.getParameterValues(String xxx); <input type="text" name=&qu ...

  7. jQuery ajax调用后台aspx后台文件的两种常见方法(不是ashx)

    在asp.net webForm开发中,用Jquery ajax调用aspx页面的方法常用的有两种:下面我来简单介绍一下. [WebMethod] public static string SayHe ...

  8. js ajax向后台传数组可以直接拼接传输

    ajax向后台传数组是可以直接传的,写法如下 var ids = [ ]; $(dom1).each(function(){ ids.push($(this).val()); }); var  use ...

  9. Ajax向前后台传递json和转换

    学生管理系统MVC模式设计心得: jquery .ajax提交data数据格式 jquery 的Ajax方法提交数据,但是是多个参数,具体data的格式如下: data提交的数据类型为:Object  ...

随机推荐

  1. Python基础学习(第3天)

    第6课 循环 1.for 元素 in 序列: statement Python的新函数range():新建一个数列,都是整数,从0开始,下一个元素比上一个元素大1,一直到数列的上限(不包括上限).PS ...

  2. js 函数里的 this

    1,当作为纯粹的函数调用时, this指向调用出的环境的上下文,看下面的例子 var x = 1; function test(){ var x = 0; alert( alert(x); } tes ...

  3. 一个高性能RPC框架原理剖析

    业务与底层网络通信分离 Server大部分主要分为两层: 网络接收层:负责监听端口,负责收包,编码,解码工作,负责将响应包回传给客户端. 业务处理层:负责接收网络接收层完整的包,如果是RPCserve ...

  4. 前端之JavaScript 03

    window对象 所有浏览器都支持 window 对象.概念上讲.一个html文档对应一个window对象.功能上讲: 控制浏览器窗口的.使用上讲: window对象不需要创建对象,直接使用即可. W ...

  5. python学习之控制语句

    #if statement number=int(input("please input a number")); if number<10 : print("is ...

  6. linux之使用samba实现文件共享

    早期网络想要在不同主机之间共享文件大多要用FTP协议来传输,但FTP协议仅能做到传输文件却不能直接修改对方主机的资料数据,这样确实不太方便,于是便出现了NFS开源文件共享程序,NFS是一个能够将多台L ...

  7. 重装Oracle时出现SID已存在问题的解决办法

    重装Oracle时出现SID已存在问题的解决办法    手机打开 注意安装oracle服务器的环境,不稳定导致数据库出现问题,后果很严重! 方法如下: 1.开始->设置->控制面板-&g ...

  8. 20165222《Java程序设计》——实验二 面向对象程序设计

    20165222<Java程序设计>——实验二 面向对象程序设计 提交点一.JUnit测试用例 知识点:这里就是了解测试代码的应用,测试代码的书写为:@Test assertEquals( ...

  9. LeetCode Partition to K Equal Sum Subsets

    原题链接在这里:https://leetcode.com/problems/partition-to-k-equal-sum-subsets/description/ 题目: Given an arr ...

  10. yarn  workspace 开发示例

    此为官方示例: package.json { "private": true, "workspaces": [ "workspace-a", ...