我实现了一个三级联动的下拉单功能,但是现在确有问题:在ajax发送一次请求后,然后刷新页面(f5,右键,地址栏后面刷新),就会将请求的结果(xml文件)输出到页面上?有那位仁兄可以指点一下吗?在线等待!!!!!!!!!!!!!
//创建 xmlHttp对象
function createXMLHttpRequest()
{
    if (window.ActiveXObject)
    {
        xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
    }
    else if (window.XMLHttpRequest)
    {
        xmlHttp = new XMLHttpRequest();
    }
}//选择行政区域时触发的动作
function addSelect(sid,element,type) {
        createXMLHttpRequest();
        var url="show_area.php?sid="+sid+"&flag="+element+"&type="+type+"";
        xmlHttp.open("GET", url, true);
        xmlHttp.onreadystatechange =onStateChange ;
        xmlHttp.send(null);
}//选择行政区域时ajax的代码
function onStateChange() {                 ////开始处理数据 3
    if(xmlHttp.readyState == 4) {
        if(xmlHttp.status == 200) {
            var returnxml=xmlHttp.responseXML;
            var returntext=xmlHttp.responseTEXT;
            var flag=returnxml.getElementsByTagName("flag")[0].text;
            var idarray=returnxml.getElementsByTagName("area_code");
            var namearray=returnxml.getElementsByTagName("area_name");
            if(flag=="selectCity"){
                var selectCity=document.getElementById("selectCity");
                for(i=0;i<100;i++){
                        selectCity.remove(0);
                }
                var selectArea=document.getElementById("selectArea");
                for(i=0;i<100;i++){
                        selectArea.remove(0);
                }
                var selectXiang=document.getElementById("selectXiang");
                for(i=0;i<100;i++){
                        selectXiang.remove(0);
                }
                var selectCun=document.getElementById("selectCun");
                for(i=0;i<100;i++){
                        selectCun.remove(0);
                }
                selectCity.focus();
                selectCity.add(new Option("---请选择---","0"));
                selectArea.add(new Option("---请选择---","0"));
                selectXiang.add(new Option("---请选择---","0"));
                selectCun.add(new Option("---请选择---","0"));
                for(i=0;i<idarray.length;i++){
                        selectCity.add(new Option(namearray[i].text,idarray[i].text));
                }
            }
            if(flag=="selectArea"){
                var selectArea=document.getElementById("selectArea");
                for(i=0;i<100;i++){
                        selectArea.remove(0);
                }
                var selectXiang=document.getElementById("selectXiang");
                for(i=0;i<100;i++){
                        selectXiang.remove(0);
                }
                var selectCun=document.getElementById("selectCun");
                for(i=0;i<100;i++){
                        selectCun.remove(0);
                }
                selectArea.focus();
                selectArea.add(new Option("---请选择---","0"));
                selectXiang.add(new Option("---请选择---","0"));
                selectCun.add(new Option("---请选择---","0"));
                for(i=0;i<idarray.length;i++){
                        selectArea.add(new Option(namearray[i].text,idarray[i].text));
                }
            }
            if(flag=="selectXiang"){
                var selectXiang=document.getElementById("selectXiang");
                for(i=0;i<100;i++){
                        selectXiang.remove(0);
                }
                var selectCun=document.getElementById("selectCun");
                for(i=0;i<100;i++){
                        selectCun.remove(0);
                }
                selectXiang.focus();
                selectXiang.add(new Option("---请选择---","0"));
                selectCun.add(new Option("---请选择---","0"));
                for(i=0;i<idarray.length;i++){
                        selectXiang.add(new Option(namearray[i].text,idarray[i].text));
                }
            }
            if(flag=="selectCun"){
                var selectCun=document.getElementById("selectCun");
                for(i=0;i<100;i++){
                        selectCun.remove(0);
                }
                selectCun.focus();
                selectCun.add(new Option("---请选择---","0"));
                for(i=0;i<idarray.length;i++){
                        selectCun.add(new Option(namearray[i].text,idarray[i].text));
                }
            }        }
    }
}
输出的xml
<?xml version="1.0" encoding="gb2312" ?> 
- <area>
  <flag>selectXiang</flag> 
- <area_info>
  <area_code>1.1.1.1</area_code> 
  <area_name>大里乡</area_name> 
  </area_info>
  </area>

解决方案 »

  1.   

    刷新页面,仍然有上一次的结果,是不是这意思?是的话,那你可能是页面重载,没初始化session值。。上面代码没看,既然第一次好使,就不太可能是上面代码的问题。
      

  2.   

    是有点乱,用AJAX还刷整个页面干什么?
      

  3.   

    呵呵!我是在测试我的程序!就是选择省以后市一级的信息已经展示在下拉框中了,这个时候我按了f5或者右键刷新、或者地址栏后面的刷新。然后ajax请求又重新运行了一次,然后在页面中直接输出了xml文件中的内容。而我要的结果是不管如何刷新,不会输出xml格式的内容
      

  4.   

    不是的。根本不涉及到session。这只是页面级的问题!好像浏览器自动记录最后两个请求(我在网上看到的,不知道对不对)。当你刷新后直接发送最后一个请求。
      

  5.   

    没用ajax写过这个菜单,这种东西也用ajax写不会增加服务器的负担吗?写个动态的就ok了一次进入,一次菜单生成啊
    不过帮你定
      

  6.   

    这就是局部刷新页面啊!三级联动菜单。只是现在有问题,把xml文件的内容给输出了