2つのドロップダウンに問題があります(2番目のボックスのオプションは、現在選択されている最初のボックスのオプションによって異なります)。私が今持っているのは: コントローラー:
@Controller
@RequestMapping(ADMINISTRATION)
{...}
@RequestMapping(value = USERS + STUDENT + "/reloadGroups/{schoolId}", method = GET)
public @ResponseBody
List<StudyGroup> reloadGroups(@PathVariable(value = "schoolId") final int schoolId) {
return studyGroupService.getStudyGroupBySchool(schoolService.getSchool(schoolId));
}
html:
<script type="text/javascript">
$(document).ready(
function() {
var selectSchool = $("#school");
var selectGroup = $("#studyGroup");
selectSchool.change(function() {
var schoolId = $("#school option:selected").val();
$.get("/administration/users/student/reloadGroups/"
+ schoolId, function(data) {
selectGroup.empty();
console.log(data);
var group = JSON.parse(data);
for ( var option in data) {
selectGroup.append($("<option/>", {
text : group[option].name,
key : group[option].id
}));
}
})
})
});
</script>
//and of course 2 select boxes with ids 'school' and 'studyGroup'
次のようなエラーが発生します:
"NetworkError: 404 Not Found - http://localhost:8080/administration/users/student/reloadGroups/2"
しかし、理由はわかりません。リクエストのマッピングは問題ないはずです。たとえば、ブラウザに入力すると、http://localhost:8080/drdiet-web/administration/users/student/reloadGroups/1
エラーが500に変わります。
"NetworkError: 500 Internal Server Error - http://localhost:8080/drdiet-web/administration/users/student/reloadGroups/1"
何が間違っている可能性がありますか?私はAjaxでまったく新しいです。
編集
これは以前は「機能しました」が、正確には機能しませんでした。最初のドロップダウン値を変更できるのは1回だけで、2番目の使用可能なオプションに影響したためです。
$(document).ready(function() {
var selectSchool = $("#school");
var selectGroup = $("#studyGroup");
selectSchool.change(function(){
var schoolId = $("#school option:selected").val();
$.ajax({
url: config.baseUrl + '/administration/users/student/reloadGroups/' + schoolId,
type: 'GET',
data: schoolId,
contentType: "application/x-www-form-urlencoded; charset=UTF-8",
dataType: 'text',
error : function() {
alert("error");
console.log("error");
},
success: function(data){
selectGroup.empty();
var aaa = JSON.parse(data);
console.log(data);
alert("ok");
for(var opt in aaa){
selectGroup.append($("<option/>", {
text: aaa[opt].name,
key: aaa[opt].id
}));
console.log(aaa[opt]);
}
}
})
});
});