У меня есть 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 неправильный?