使用json将Ajax响应设置为下拉

时间:2013-11-02 13:18:56

标签: javascript jquery ajax json struts2

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

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

    });

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

1 个答案:

答案 0 :(得分:0)

我建议您使用Struts2 DoubleSelect

这是一个很好的example

如果列表非常大,那么您可以选择第二个选择列表。

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

您可能希望将Struts2 Jquery Select Tag用于实际在响应中发送JSON的第二个选择。

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