zoukankan      html  css  js  c++  java
  • Ajax传递数组乱码,layUI批量删除时乱码

    当在LayUI中进行批量删除时候,使用了数组进行传值,后台总响应500,无法接收数据。

    于是看了一下请求的参数,发现多了一些编码,如下图:
    在这里插入图片描述
    原因是:Ajax中少了traditional:true,参数。添加参数如下图:

    var ids = [];
    for(var i=0;i<checkStatus.data.length;i++){
       ids.push(checkStatus.data[i].id);
    }
    $.ajax({
       type: "POST",
       url: '/student/deleteStudentMany',
       data: {ids:ids},
       traditional:true,
       success: function (data) {
           layer.closeAll('loading');
           if (data.code == 1) {
               layer.msg('删除成功!', {icon: 1, time: 2000, shade: 0.2});
               location.reload(true);
           } else {
               layer.msg('删除失败!', {icon: 2, time: 3000, shade: 0.2});
           }
       }
    })

    添加后,请求的参数就正常了。

    在这里插入图片描述
    具体原因:

    traditional默认值是false。
    当提交的参数是数组( {ids:[value,value,value]} )时,
    如果traditional是false话,则提交时会是"ids[]=value&ids[]=value"
    如果traditional是true时,则提交时会是"ids=value&ids=value"
    
    设置为true后,后台就能用下面两种方法获得值了。
    方法一:
    String[] ids=request.getParameterValues("ids");
    方法二:
    @RequestMapping(value = "/deleteStudent")
    @ResponseBody
    public void deleteStudent(Integer[] ids) {}

    官方文档的解释如下(来源网络):

    traditional
    类型:Boolean
    如果你想要用传统的方式来序列化数据,那么就设置为 true。
    Set this to true if you wish to use the traditional style of param serialization.

    简而言之:有了这个属性才可以让ajax传数组或对象。

  • 相关阅读:
    Mac 快速进入mysql命令行
    Vuex 的使用 State Mutation Getter Action
    Vuex状态管理
    路由模块化
    Vue中路由的嵌套
    Vue路由编程式导航以及hash模式
    Vue动态路由 Get传值
    Vue中的路由 以及默认路由跳转
    Vue非父子组件传值
    父组件主动获取子组件的数据和方法 和 子组件主动获取父组件的数据和方法
  • 原文地址:https://www.cnblogs.com/mxxbc/p/14039004.html
Copyright © 2011-2022 走看看