0

ここではjson + ajax + struts2 、依存ドロップダウンを作成するために使用しています。最初のドロップダウンは、2 番目のドロップダウンがロードされている値に基づいた値を持ちます。2番目のドロップダウンでは、最初のドロップダウンのデータをクリックするたびに未定義の値が返されます(ここではonchangeイベントを使用しています)。struts2 から ajax レスポンスをオブジェクトとして取得しています。これらのオブジェクトを 2 番目のドロップダウンの文字列に変換したい (ID と名前が含まれている必要があります)。オブジェクトを文字列に変換する方法がわかりません。スタックオーバーフローとグーグルでいくつかのリンクを試しましたが、うまくいきません。これが私のコードです:

ストラット2:

            second_drop_downList=retrieveSecond();

    ServletActionContext.getResponse().setContentType("text/html");
    PrintWriter out = ServletActionContext.getResponse().getWriter();
    out.print(second_drop_downList);
    out.flush();

ここでは、データベースに存在するデータの正しいサイズを取得しています。上記のコードを使用して、これらのデータを ajax 応答に渡しています。

ここに私のajaxコードがあります:

$(".country").change(function() {
        var id = $(this).val();
        var dataString = 'id=' + id;


        $.ajax({
            type : "POST",
            url : "sendDropdown.action",
            data : dataString,
            success : function(response) {
                alert(response);
            var myJSONText = JSON.stringify(response);
            //alert(myJSONText);
            var obj = JSON.parse(myJSONText);
            alert(obj);
            var html = '<option value="">select Section</option>';
            for ( var i = 0; i < obj.length; i++) {
            html += '<option value="'+obj[i].id+'">' + obj[i].dep_name
            + '</option>';
            }
            html += '</option>';

            $('.city').html(html); 
            }
        });

    });

ここでは、16 進数形式で応答を取得しています (アラートで)。しかし、ドロップダウンでは未定義になっています。

4

1 に答える 1