0

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]);
                }
            }
            })
        });
    });
4

1 に答える 1

0

わかりました、エラー404は非常に明白でした(config.baseUrl)。内部サーバーエラー(コード500)は、コントローラーのさまざまなタイプのリストが原因で発生しました。すべての返信に感謝します。

于 2013-03-07T10:07:27.700 に答える