我正在做一个项目,我试图做一个级联下拉使用ajax。
我设法做到了实现,但我不知道如何从第二个下拉传递选定的id到使用thymeleaf的控制器,以显示有关选定机场的信息。
脚本如下:
function retrieveAirports() {
$.ajax({
url: '/countries/airports?countryId=' + $('#countrySelect option:selected').val(),
type: 'get',
contentType: 'application/json',
success: function (result) {
var $dropdown = $("#airportSelect");
var $id = $("#airportId");
$dropdown.empty();
$.each(result, function() {
$dropdown.append($("<option/>").val(this.id).text(this.name));
});
},
error: function () {
// what do you want to do in case of error
}
});
}
这是下拉菜单的实现。首先,我们有国家
<select id="countrySelect" onchange="retrieveAirports()">
<option selected value="-1"></option>
<option th:each="country : ${countries}" th:value="${country.id}" th:text="${country.name}">Option</option>
</select>
这个是机场下拉菜单,这个的结果取决于从第一个传递给脚本的id。
<form th:action="@{/airport}" method="post" th:object="${airportSelect}">
<select id="airportSelect">
<option selected value="-1"></option>
</select>
<input type="submit" value="Send"/>
</form>
有人能帮帮我吗?
谢谢!
添加一个name
到机场选择器,例如airport
:
<form th:action="@{/airport}" method="post" th:object="${airportSelect}">
<select id="airportSelect" name="airport">
<option selected value="-1"></option>
</select>
<input type="submit" value="Send"/>
</form>
然后,当您点击提交按钮时,路径/airport
的Spring控制器将被调用,airport
作为POST参数。例如:
@Controller
public class AirportController {
@PostMapping("/airport")
public View viewAirport(@RequestParam("airport") int airport) {
// ...
}
}