jquery+ajax+xml,实现地区三级联动菜单无需数据库查询

3808

jquery+ajax+xml,实现地区三级联动,运行速度快,性能要比连接mysql要高很多,而且比连接mysql操作更简单,方便,高效!

HTML:

<h2>地区三级联动</h2>
  省份:<select id="province" onchange="showcity()">
         <option value='0'>-请选择-</option>
      </select>
  城市:<select id="city" onchange="showaddre()">
            <option value='0'>-请选择-</option>
         </select>
  地区:<select id="diqu"><option value='0'>-请选择-</option></select>

Jquery:

<script type="text/javascript">
      var xmldom = null; //声明一个全局变量,用于存储第一次请求回来的xml信息
       //获取并显示省份
       function showprovince(){
        //① ajax去服务器端获得xml文件里边的省份信息
        $.ajax({
           url:'./ChinaArea.xml',
           //data:,
           dataType:'xml',  //调用responseXML
           type:'get',
           success:function(msg){
                xmldom = msg; //把请求回来的xml信息赋予给xmldom一份
                 //alert(msg);//object XMLDocument
                var pros = $(msg).find('province');//在msg里边获得province元素节点对象
                //遍历省份信息出来 pros是jquery对象
                pros.each(function(k,v){
                  var nm = $(this).attr('province'); //省份名称
                  var id = $(this).attr('provinceID'); //省份id
                  $('#province').append("<option value='"+id+"'>"+nm+"</option>");
                            });
                        }
                    });
                   //② jquery解析xml并显示
              }
        $(function(){
           //页面加载完毕就显示省份
          showprovince();
       });
function showcity(){
     //根据选中的省份显示对应的城市
     //① 获得被选中的省份的value属性值
     var pid = $('#province option:selected').val();
     //② 在xml文档中获得province节点(xml的province节点),其属性provinceID="pid"
     //   (xml文档内容"不发生变化",其不适合做频繁的请求,带宽、服务器资源、用户等待时间有损耗)
     var xml_province = $(xmldom).find('province[provinceID='+pid+']');
                
     //③ 在xml_province(jquery对象)里边获得子节点City
     var citys = xml_province.find('City');
     //④ 遍历citys,并在页面上显示
     $('#city').empty(); //先清除已经显示的节点
     $('#city').append('<option value="0">-请选择-</option>');
     citys.each(function(){
         var nm = $(this).attr('City');
         var id = $(this).attr('CityID');
         $('#city').append("<option value='"+id+"'>"+nm+"</option>");
     });
}
function showaddre(){   
    var pid = $('#city option:selected').val();         
    var xml_province = $(xmldom).find('City[CityID='+pid+']');  
    var Piecearea = xml_province.find('Piecearea');
    $('#diqu').empty(); //先清除已经显示的节点
    $('#diqu').append('<option value="0">-请选择-</option>');
    Piecearea.each(function(){
        var nm = $(this).attr('Piecearea');
       var id = $(this).attr('PieceareaID');
       $('#diqu').append("<option value='"+id+"'>"+nm+"</option>");
     });
   }
</script>

ChinaArea.xml文件:

ChinaArea.xml