zoukankan      html  css  js  c++  java
  • 解决Ajax异步请求中传数组参数,后台无法接收问题

      项目中经常遇到批量删除、批量导出等需求,往往需要把多个id封装成数组传到后台做业务逻辑处理。但是普通ajax请求data参数是数组,后台用数组接收不到。
    一般ajax写法

    var ids= [];
    $.ajax({ 
            url: 'xxxx.do', 
    data: { ids: ids},
    dataType:
    "json",
    type:
    "POST",
    success: function (responseJSON) {
    alert(
    'Ok');
    }
    });

    这样的写法后台用数组类型接收参数ids为null。经过多方查询解决方案是在ajax请求时加上traditional:true,就可以了。

    $.ajax({ 
        url: 'xxxx.do', 
        data: { ids: ids}, 
        dataType: "json", 
        type: "POST", 
        traditional: true,//这里设为true就可以了
        success: function (responseJSON) { 
            alert('Ok'); 
        } 
    }); 

    为什么这样写?traditional又是什么意思呢?下面为大家解惑:
    一般我们传数参数组时这样写:

    data:{arr:[1,2,3]}

    如果单纯写成这样,在java后台是无法取到参数的,因为jQuery需要调用jQuery.param序列化参数:jQuery.param( obj, traditional )

    默认的话,traditional为false,即jquery会深度序列化参数对象,但servelt api无法处理,我们可以通过设置traditional 为true阻止深度序列化,

    然后序列化结果如下:

    arr: ["123", "456", "789"] => arr=123&arr=456&arr=456

    这样之后,我们就可以在后台通过request.getParameterValues()来获取参数的值数组了。

  • 相关阅读:
    自相关函数 互相关函数 平稳随机过程
    MC323发短信程序+MSP430F149
    labview notes
    DSSS FHSS
    dBm与功率(w)换算关系!
    int 正负相乘
    51单片机 1602液晶显示
    51单片机 AD转换
    51单片机 蜂鸣器
    51单片机 串口通信
  • 原文地址:https://www.cnblogs.com/wangshuaiandroid/p/6702956.html
Copyright © 2011-2022 走看看