日期:2014-05-18  浏览次数:20774 次

Ajax实现无刷新三联动下拉框
在struts+jsp下
如 省->市->区
想了好久就是不会写
自己也刚刚学ajax
请高手帮帮忙
谢谢

------解决方案--------------------
Java code

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
 <HEAd>
    <TITLE><%=xmmc%>--<%=wjmc%>
    </TITLE>
    <script type="text/javascript">
            if (window.ActiveXObject && !window.XMLHttpRequest) {
                window.XMLHttpRequest=function() {
                    return new ActiveXObject((navigator.userAgent.toLowerCase().indexOf('msie 6') != -1) ? 'Microsoft.XMLHTTP' : 'Msxml2.XMLHTTP');
                };
            }//取得XMLHttpRequest对象
                
            var req;
            var flagSelect;
            function testName(flag,value)//
            {
            flagSelect = flag; 
            req=new XMLHttpRequest();
            if (req) 
            {
                req.onreadystatechange=setValue;
            }
                req.open('POST',"getLabelValue.do?flag="+flag+"&value="+value);
                req.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
                req.send(null);
        }
            function setValue()
            {
                if (req.readyState==4 )
                {                                 
                    if(req.status==200)
                    {    
                        
                        if(flagSelect=="1")//如果选择某个省要更新市和区
                        {
                            var v=req.responseText.split("||");
                            paint(document.all("shi"),v[0]);
                            paint(document.all("qu"),v[1]);
                        }
                        if(flagSelect=="2")//如果选择某市,只需改变区
                        {
                            var v=req.responseText;
                            paint(document.all("qu"),v);
                        }
                    }
                }
            }

            function paint(obj,value)
            {
                var ops = obj.options;
                    while(ops.length>0)
                    {
                      ops.remove(0);
                    }
                    for(var i=0;i<v.length-1;i++)
                    {
                        var o = document.createElement("OPTION");
                        o.value=v[i].split(",")[0];
                        v.text=v[i].split(",")[1];
                        ops.add(o);
                    }
            }
            </script>


    <body>
    <table>
       <tr>
        <td>
         省<select name="pro" onchange="testName(1,this.value);">
                   <option value="1">省一</option><!--用循环把数据库里的所有省选出来-->
           </select>
        </td>
          <td>
         省<select name="shi" onchange="testName(2,this.value);">
                   <option value="11">市一</option><!--用循环把数据库里的所有省一的市选出来-->
           </select>
        </td>
          <td>
         区<select name="qu">
                   <option value="111">区一</option><!--用循环把数据库里的所有省一的市一的区选出来-->
           </select>
        </td>
       </tr>
    </table>
    </body>                        
</HTML>


 写一个actioin
public class GetLabelValueAction extends Action {
    public ActionForward execute(ActionMapping mapping, ActionForm form,
            HttpServletRequest request, HttpServletResponse response) {
        response.setContentType("text/xml; charset=GBK");
        try {
            PrintWriter out = response.getWriter();
            String flag = re