尝试使用Ajax将数据数组传递给Spring MVC Controller

时间:2019-03-29 02:18:49

标签: ajax spring-mvc

我编写代码以使用Ajax将数据从javascript发送到Spring MVC Controller。

由于在客户端控制台中打印了“成功”消息,因此我的Ajax代码似乎工作正常,因此我假设执行了POST。但是,我的控制器似乎没有被调用,因为它的消息从未打印到服务器控制台。

我的Ajax代码:

<script>
            $(document).ready(function () {
                $("#submit-btn-2").on("click", function () {
                    var idList = [];
                    $(".vm-row").has(":checkbox:checked").each(function() {
                        idList.push($(this).attr('id'));
                    });
                    $.ajax({
                        type: "POST",
                        url: 'submitVendors',
                        data: {idList:idList},
                        success: function(id) {
                            console.log("SUCCESS: ", idList);                           
                        },
                        error : function(e) {
                            console.log("ERROR: ", e);
                        },
                        done : function(e) {
                            console.log("DONE")
                        }
                    })
                });
            });
</script>

单击关联的按钮会使此消息打印到客户端控制台:

SUCCESS:  Array(3)

我的控制器:

@RequestMapping(value="/submitVendors", method = RequestMethod.POST, produces = MediaType.APPLICATION_JSON_VALUE)
    public @ResponseBody 
    String submitVendors(@RequestParam("idList[]") String[] idList, HttpServletRequest request) {

        String vid = request.getSession().getAttribute("vid").toString();
        System.out.println("Inside submitVendors service.");

        for (String id : idList)
        {
            System.out.println("It actually worked: " + id);
        }

        return "vendormanagement";
    }

服务器控制台不会打印任何类型的错误,消息也不会。

2 个答案:

答案 0 :(得分:2)

尝试一下:

data: JSON.stringify(idList),(@RequestBody String[] idList)

或者这个:

data: {"idList":idList.toString()},(@RequestParam(value = "idList") List<String> idList)

答案 1 :(得分:0)

传递带有由ajax返回的变量名的RequestParam名称,

@RequestParam(value="idList") ArrayList<String> idList)

将以下属性添加/更改为ajax函数中的

dataType: 'json',
data:{idList : idList.toString()}