首页 > 解决方案 > 尝试使用 Ajax 将数据数组传递给 Spring MVC 控制器

问题描述

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

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

我的阿贾克斯代码:

<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";
    }

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

标签: ajaxspring-mvc

解决方案


尝试这个 :

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

或这个 :

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


推荐阅读