• jQuery.ajax向后台传递数组问题


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

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


    图片参数1


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


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

  • 相关阅读:
    数据库的连接、会话与SQLite
    数据库的连接
    SQlite的结构——存储管理
    数据库 schema含义
    SQLite这么娇小可爱,不多了解点都不行啊
    简析打开数据库流程
    计算机系为什么要学数据库原理和设计?
    SQLite的sqlite3_prepare_v2
    Sqlite3并发读写注意事项
    SQLite也可能出现死锁
  • 原文地址:https://www.cnblogs.com/toSeeMyDream/p/6843951.html
Copyright © 2020-2023  润新知