我有2個下拉菜單:一個用於類別,一個用於子類別。根據我在第一個下拉列表中選擇的類別,我希望第二個下拉列表可以用所選類別的子類別動態填充。這是我到目前爲止有:基於另一個下拉選擇填充下拉列表Spring MVC AJAX
控制器來填充第一個下拉:
@RequestMapping(value = "/post_project", method = RequestMethod.GET)
public String postProjectPage(Model model) {
Project project = new Project();
List<Category> categoriesList = categoryService.getAllCategories();
model.addAttribute("projectForm", project);
model.addAttribute("categoriesList", categoriesList);
return "post_project";
}
JSP:
<form:form id="post_project" action="/post_project" method="post" modelAttribute="projectForm">
<form:select class="form-control" id="selectCategory" path="category">
<option value="">-Select-</option>
<form:options items="${categoriesList}" itemValue="id" itemLabel="category_name"/>
</form:select>
對於我有以下控制器的子類別:
@RequestMapping(value = "/post_project", method = RequestMethod.POST)
public @ResponseBody List<Subcategory> getAllSubcategories(@RequestParam(value="categoryId") int categoryId) {
return categoryService.getAllSubcategories(categoryId);
}
JSP:
<form:select class="form-control" id="selectSubcat" path="subcategory">
<option value="-1" label="-Select-"/>
</form:select>
爲了填充第二個下拉列表,我使用了AJAX,但是我對此很新,我不知道它是否正確。
("#selectCategory").change(function(){
var categoryId = $(this).val();
$.ajax({
type: 'POST',
url: "/post_project",
data: {"categoryId" : 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");
}
});
});
當然,這是行不通的。當我選擇一個cateogry時,第二個下拉列表中沒有任何顯示。我不知道該做什麼,我已經嘗試了一切。有人可以告訴我我做錯了什麼嗎?
您是否在後端獲取請求? –