0

在这里,我json + ajax + struts2 用来创建依赖下拉菜单。第一个下拉列表具有基于这些值的一些值,第二个下拉列表正在加载。在第二个下拉菜单中,每次单击第一个下拉菜单的数据后,我都会得到响应未定义的值(这里我正在使用onchange事件)。我从 struts2 作为对象得到 ajax 响应。我想将这些对象转换为第二个下拉列表的字符串(它应该包含 id 和 name)。我不知道如何将对象转换为字符串。我尝试了stackoverflow中的一些链接并用谷歌搜索,但它对我不起作用。这是我的代码:

Struts2:

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

    });

在这里,我得到了十六进制格式的响应(在警报中)。但在下拉列表中我得到了未定义。

4

1 回答 1

0

我建议你使用Struts2 DoubleSelect

这是一个很好的例子

如果列表真的很大,那么您如何选择第二个选择列表就成了一个选择问题。

您当然可以使用 ajax,但问题是您希望接收的数据类型。

可能您想使用Struts2 Jquery Select Tag作为第二个选择,它实际上在响应中发送 JSON。

或者您想在第一个选择的选择上触发一个 ajax 请求,然后在响应中获得完整的第二个选择。

于 2013-11-02T23:09:49.797 回答