前台通过$.post或者$.ajax等像后台传递数组格式的数据,后台接收不到,一直报null

场景:前台通过$.post或者$.ajax等像后台传递数组格式的数据,后台接收不到,一直报null

分析

  ①后台参数 和 前台参数没有对应

  ②前后台类型不一致

  ……

解决

  原因:②前后台类型不一致

  是因为前台传值时使用的

let Ids=[];
Ids.push('1','2');
$("url",{"ids":Ids},function(){})

  后台接收时使用的

@ResponseBody
@RequestMapping("url")
public int updateRoles(String ids){}

  解决方法:前台传值时:

$("url",{"ids":Ids.toString()},function(){})//方式1
//或者
$("url",{"ids":JSON.stringify(Ids)},function(){})//方式2

  后台接收时使用不变

@ResponseBody
@RequestMapping("url")
public int updateRoles(String ids){}

  处理值时

//        如果传进来的是第2种"["43","44"]",则
//        String replace1 = ids.replace("[", "");
//        String replace2 = replace1.replace("]", "");
//        String replace3 = replace2.replace("\"", "");
//        String[] split = replace3.split(",");
//        如果是第1种"43,44"
        String[] split = ids.split(",");
        List<Long> roleIds = new ArrayList<>();
        for (String s : split) {
            roleIds.add(Long.valueOf(s));
        }

  

 

posted @ 2022-03-16 10:23  Mrzxs  阅读(390)  评论(0编辑  收藏  举报