ssm中 controller 如何接收ajax传来的string 数组?

图片说明
以上是我前端获取到的数值
@RequestMapping("deleteByInfoPanelIds")
@ResponseBody
public JsonResult deleteByInfoPanelIds(@Param("deviceId") String[] s){
System.out.println(s);
//infoPanelService.deleteInfoPanelByIds(list);
return new JsonResult();
}

    以上是我controller 的写法。各种方法都试过了,目前这么写s的值为null。。悬赏求解,在线等

9个回答

应该接受不了数组吧,先拼字符串后台接收到再解开比较靠谱一点。

baokx
一缕清风007 回复fakertt: 刚才验证了一下,片刻清夏建议的 ajax提交时加上 traditional: true ,这个方法是最好的。
2 年多之前 回复
baokx
一缕清风007 回复fakertt: 哥们,人家回复的那么详细你干嘛采纳我的啊,你这样好打击别人回答问题的积极性。
2 年多之前 回复
zjq_1314520
片刻清夏 回复fakertt: 还是建议在 ajax提交时加上 traditional: true 试试看,是可以传数组的!
2 年多之前 回复
fakertt
fakertt 照着你的思路 一开始获取ID的时候 就以1,2,3的形式拼起来 然后再用json {“ids”:ids}的方式传过去。果然能收到值了
2 年多之前 回复
 public JsonResult deleteByInfoPanelIds(@Param("deviceId") String s){
 //……
}
直接用Strinng接受,然后再在后台解析成JSON
zjq_1314520
片刻清夏 回复fakertt: 看我的另外的那个回复,ajax提交时加上 traditional: true 试试看!
2 年多之前 回复
fakertt
fakertt 试了一下 现在 输出s的值为null。。。。
2 年多之前 回复

首先 ajax里面可以直接传入参数
$.ajax({
type:'POST',
url:'sendPwd?fid=${sendPwd.funcNo}',
data:{userId:userId,merchantId:merchantId},
async:false,
cache:false,
dataType:'json',
success: function(msg){

},
error:function(XMLHttpRequest, textStatus, errorThrown){
}
像这种,直接在url后面带上你要的参数

                    然后你的requestmapping里的url
                    要加/
                    @RequestMapping("/deleteByInfoPanelIds")

然后还可以通过后台的@param的方法或者requet.getparamer("");的方法获取前台的数据

fakertt
fakertt 。。试过了 单个的值我是可以获取到的 就是 我想直接获取到一个json格式的数组
2 年多之前 回复

楼上的方法可以尝试一下,在ajax传值过去的时候先将值拼成字符串,用逗号分隔成数组,再进行循环操作,接数组还没有操作过

for ( var i = 0; i < rows.length; i++) {
                        ids.push(rows[i].id);
                    }
 $.ajax({
                        url : url,
                        type : 'post',
                        data : {
                            ids : ids.join(',')
                        },
                        cache : false,
                        success : function(data) {
zhaokk_git
养码一生 回复fakertt: 接不到是因为你没有转成Json再传递,后台接不到的
2 年多之前 回复
fakertt
fakertt 小哥 你的方法试过了 没有报任何错误 但是 后台接受的是null值
2 年多之前 回复
 前台
         $.ajax({
            url: "${ctx}/goodsorder/createOrderItem",
            type: "post",
            data: {
                "arrCarItems": arrCarItems,   //这是数组
                "userId":${sessionScope.user.userId}
           },
                            traditional: true         //加上这个试试
 //……


后台


    @ResponseBody
    @RequestMapping(value = "/createOrderItem")
    public BaseHelper createOrderItem(Integer[] arrCarItems, Integer userId) {
        //……
        }


这上面的代码时可行的!

建议使用字符串传参,后台收到后分割成数组。

按理不应该是通过ajax把后台的数据传输到前端的页面吗?

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问