如何使用json响应填充<s:select>?</s:select>

时间:2012-10-12 23:02:50

标签: java json jsp struts2

我正在使用Struts 2.我正在尝试使用数据库中的数据填充组合框(select),这些值由另一个组合框定义。

当我从第一个组合框中选择一个状态时,第二个必须从数据库中加载数据。

这就是我所拥有的:

JSP:

<script type="text/javascript">
            function cargarMunicipios(estado){
                console.log(estado);
                var estado="estado="+estado;
               $.getJSON('getMunicipios'),estado,function(data){
                    $('.result').html(''+data.estados+'');
                    $.each(data.estados,function(index,value){
                        var opcion=new Option(value);
                        var municipio=document.getElementById("municipios");
                        console.log(value);
                        municipio.add(opcion)
                    })
                } 
            }
        </script>

...

<s:select list="estados" name="estados" listValue="nombre"
                      listKey="nombre" label="Estado" id="estados" onchange="cargarMunicipios(this.value)"/>
            <s:select list="municipios" name="municipios" listValue="nombre"
                      listKey="nombre" label="Municipio" id="municipios"
                      />

这是对struts.xml的操作:

 <action name="getMunicipios" class="actions.PrepararMedicosAction" method="loadMunicipios">
            <result type="json">
                <param name="root">nombre</param>
            </result>        
        </action>     

这是通过操作调用的方法:

public String loadMunicipios(){
        municipios=fachada.buscaMunicipios(new Estado(Integer.SIZE, estado, ""));
        return SUCCESS;
    }

但是当我选择一个状态时,第二个Dropbox没有被填充,在Web控制台上我得到http请求为“Ok”。

我是Ajax和Struts 2的新手..请帮帮我..谢谢:)。

1 个答案:

答案 0 :(得分:1)

看起来你正在使用jQuery。尝试这样的事情:

$.getJSON('getMunicipios'),estado,function(data){
    $('.result').html(''+data.estados+'');
    $.each(data.estados,function(index,value){
        var opcion= $('<option>').attr('value', value);
        var municipio = $("#municipios");
        console.log(value);
        municipio.append(opcion);
    });
});