Попытка передать массив данных в Spring MVC Controller с помощью Ajax - PullRequest
0 голосов
/ 29 марта 2019

Я пишу код для отправки данных из JavaScript в Spring MVC Controller с использованием Ajax.

Похоже, что мой 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 ]

2 голосов
/ 29 марта 2019

Попробуйте это:

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

ИЛИ это:

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

0 голосов
/ 29 марта 2019

передать имя RequestParam, сопоставленное с именем переменной, возвращаемым ajax,

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

добавить / изменить следующие свойства в / в функции ajax

dataType: 'json',
data:{idList : idList.toString()}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...