zoukankan      html  css  js  c++  java
  • 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


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

  • 相关阅读:
    selenium爬取沃尔玛分类和商品详情
    linux下部署redis
    linux系统基本操作命令
    Scrapy & Django项目
    爬虫爬取百度搜狗图片持久化存储
    django + vue 简单配置登录注册及分页和实例化
    vue安装及常用属性
    vue跨域配制
    Django中配置全文检索
    Django框架知识点简单总结(1)
  • 原文地址:https://www.cnblogs.com/toSeeMyDream/p/6843951.html
Copyright © 2011-2022 走看看