Контроллер не вызывается, хотя AJAX - PullRequest
0 голосов
/ 29 января 2020

У меня есть jsp страница с 2 выпадающими. второе раскрывающееся меню должно заполняться на основе значения, выбранного из первого раскрывающегося списка. Я использую AJAX для этого, чтобы вызвать метод контроллера при выборе первого раскрывающегося списка, чтобы вернуть значения для второго раскрывающегося списка как json. При нажатии кнопки «Отправить» вся форма будет отправлена ​​в метод контроллера. Но при выборе первого раскрывающегося списка я не получаю никакого запроса на метод контроллера.

Jsp file

alert("Ok");
("#selectCategory").onChange(function() {
  var categoryId = $(this).val();
  alert(categoryId);
  $.ajax({
    type: 'GET',
    url: "/categories/" + categoryId,
    success: function(data) {
      var slctSubcat = $('#selectSubcat'),
        option = "";
      slctSubcat.empty();

      for (var i = 0; i < data.length; i++) {
        option = option + "<option value='" + data[i].id + "'>" +
          data[i].subcateogory_name + "</option>";
      }
      slctSubcat.append(option);
    },
    error: function() {
      alert("error");
    }

  });
});
<form action="/show" method="post" modelAttribute="model">
  <select class="form-control" id="selectCategory" name="sel">
    <option value="Alto">Alto</option>
    <option value="Esteem">Esteem</option>
  </select> <br>
  <select class="form-control" id="selectSubcat">
    <option value="-1" label="-Select-" />
  </select>
  <input type="Submit" value="Submit" />
</form>

Метод контроллера

@GetMapping("/categories/{categoryId}")
    @ResponseBody
    public List<String> get(@PathVariable("categoryId") String categoryId)
    {
    System.out.println("inside controller get  "+categoryId);
        ArrayList<String> l= new ArrayList<String>();
        if(categoryId.equals("Alto"))
        {
            l.add("Alto Model 1");
            l.add("Alto Model 2");
            return l;
        }
        else if(categoryId.equals("Esteem"))
        {
            l.add("Esteem Model 1");
            l.add("Esteem Model 2");
            return l;
        }
        return null;
    }

Если я сделаю отдельный вызов rest для этого метода контроллера, я получу ответ как json ["Модель уважения 1", "Модель уважения 2"] , но через ajax запрос не выполняется. Я новичок в Ajax. Может кто-нибудь поправить меня, если код ниже ajax неправильный?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...