Передайте идентификатор из вызова JQuery Ajax в Spring Boot Controller для возврата данных списка - PullRequest
0 голосов
/ 05 мая 2020

Мой проект spring boot java тимелеафа имеет форму с раскрывающимся списком, заполненным из таблицы SQL. В форме есть второй раскрывающийся список, который я хочу заполнить в зависимости от того, какой элемент выбран в первом раскрывающемся списке. Для этого мне нужно будет передать идентификатор значения первого раскрывающегося списка обратно в контроллер Spring. Я знаю, что мне нужно использовать JQuery Ajax, чтобы выполнить sh это. Я пытаюсь выполнить один вызов ajax для передачи выбранного идентификатора и получить новый список для второго раскрывающегося списка без обновления страницы, но не могу правильно понять синтаксис.

Я был смог войти в мою функцию контроллера Spring с обновленным кодом ниже, но я не уверен, как передать данные обратно и добавить их на страницу.

Может ли кто-нибудь объяснить мне, что это за данные в функции Success ? Когда я его console.log, ничего не появляется. И я считаю, что мне нужно передать данные обратно в эту функцию, чтобы я мог добавить эти данные из моего контроллера Spring в параметры выбора.

    $('#parentCo').on('change', function(event){
    $('#parentCo').find('option:selected');
    var id =  $('#parentCo').find('option:selected').attr('data');
    console.log(jQuery.type(id));
    var token = $("meta[name='_csrf']").attr("content");
    var header = $("meta[name='_csrf_header']").attr("content");
     $.ajax({
            type: "POST",
            url: "/carrierAjax",
            data:{data: $('#parentCo').find('option:selected').attr('data')},
            cache: false,
            timeout: 600000,
            beforeSend: function(xhr) {
                // here it is
                xhr.setRequestHeader(header, token);
                 console.log(header +", "+ token);
            },
            success: function (data) {
               //appending data and console.log(data) doesnt return anything

            }
        });
});

Вот мой контроллер ...

@RequestMapping(value="/carrierAjax", method=RequestMethod.POST)
    public @ResponseBody List <CarrierUmbrella>  getcarrierswriteco (@RequestParam("data") String data) {
        List <CarrierUmbrella> carrierUmbrellas = carrierUmbrellaRepository.findByCarrier(caRepository.findById(Long.parseLong(data)));
//        model.addAttribute("carrierUmbrellas", carrierUmbrellas);
        return carrierUmbrellas;
}
...