>  기사  >  웹 프론트엔드  >  Jquery+Ajax+xml을 사용하여 3단계 연결 효과 만들기

Jquery+Ajax+xml을 사용하여 3단계 연결 효과 만들기

巴扎黑
巴扎黑원래의
2017-06-22 17:46:261085검색

아래 편집기는 중국에서 3단계 연결 메뉴를 선택하는 효과를 얻기 위한 기사Jquery+Ajax+xml을 가져올 것입니다(권장). 편집자님이 꽤 좋다고 생각하셔서 지금 공유하고 모두에게 참고용으로 드리고자 합니다. 에디터를 따라가서 살펴볼까요

이 글에서는 주로 Jquery+Ajax+xml의 사용법을 소개합니다. 먼저 우리나라의 모든 지도 정보를 담고 있는 xml 문서가 필요합니다.

여기에서 선택한 xml 문서의 주요 구조(총 1000줄 이상)는 다음과 같습니다.


<?xml version="1.0" encoding="utf-8"?>
<area Country="China">
 <province ID="1" provinceID="110000" province="北京市">
  <City CityID="110100" City="市辖区">
   <Piecearea PieceareaID="110101" Piecearea="东城区" />
   <Piecearea PieceareaID="110102" Piecearea="西城区" />
   <Piecearea PieceareaID="110103" Piecearea="崇文区" />
   <Piecearea PieceareaID="110104" Piecearea="宣武区" />
   <Piecearea PieceareaID="110105" Piecearea="朝阳区" />
   <Piecearea PieceareaID="110106" Piecearea="丰台区" />
   <Piecearea PieceareaID="110107" Piecearea="石景山区" />
   <Piecearea PieceareaID="110108" Piecearea="海淀区" />
   <Piecearea PieceareaID="110109" Piecearea="门头沟区" />
   <Piecearea PieceareaID="110111" Piecearea="房山区" />
   <Piecearea PieceareaID="110112" Piecearea="通州区" />
   <Piecearea PieceareaID="110113" Piecearea="顺义区" />
   <Piecearea PieceareaID="110114" Piecearea="昌平区" />
   <Piecearea PieceareaID="110115" Piecearea="大兴区" />
   <Piecearea PieceareaID="110116" Piecearea="怀柔区" />
   <Piecearea PieceareaID="110117" Piecearea="平谷区" />
  </City>
<province>

해당 양식을 작성하고 설정에 따라 도/시 동작을 선택합니다. :


<h2>地区三级联动菜单</h2>
  省:<select id="province" onchange="showcity()"><option value="0">-请选择-</option></select>
  市:<select id="city" onchange="showdistrict()"><option value="0">-请选择-</option></select>
  地区:<select id="district"><option value="0">-请选择-</option></select>

다음은 JS 코드의 줄입니다


//声明一个全局变量,用于存储第一次请求的xml信息,避免后续多次频繁请求xml
    var xmldom =null;
    //获取并显示省份信息
    function showprovince(){
      //使用ajax去服务器获得xml文件里面的省份信息
      $.ajax({
        url:&#39;./ChinaArea.xml&#39;,
        //data:
        dataType:&#39;xml&#39;,//相当于调用responseXML
        type:&#39;get&#39;,
        success:function(msg){
          //将返回的xml信息赋予xmldom
          xmldom = msg;
          //获得province 元素节点对象
          var prov = $(msg).find(&#39;province&#39;);
          //遍历省份信息
          prov.each(function(k,v){
            var nm = $(this).attr(&#39;province&#39;);
            var id = $(this).attr(&#39;provinceID&#39;);
            //追加到指定的节点
            $(&#39;#province&#39;).append("<option value="+id+">"+nm+"</option>");
          });
        }

      });
    }
    //网页加载显示省份信息  
    $(function(){
      showprovince();
    });
    function showcity(){
      //获取 省份 的id
      var pid = $(&#39;#province option:selected&#39;).val();
      //根据xmldom信息 找到指定的省份节点
      var xml_province = $(xmldom).find(&#39;province[provinceID=&#39;+pid+&#39;]&#39;);
      // 获取对应所有县市节点
      var city = $(xml_province).find(&#39;City&#39;);
      //在遍历追加前,先清空此前已经显示的信息
      $(&#39;#city&#39;).empty();
      $(&#39;#city&#39;).append(&#39;<option value="0">-请选择-</option>&#39;);
      //遍历追加县市
      city.each(function(k,v){
        var nm = $(this).attr(&#39;City&#39;);
        var id = $(this).attr(&#39;CityID&#39;);
        $(&#39;#city&#39;).append(&#39;<option value=&#39;+id+&#39;>&#39;+nm+&#39;</option>&#39;);
      });
    }
    //以下函数的逻辑与showcity()的逻辑一致
    function showdistrict(){
      //获取 县市 的id
      var cid = $(&#39;#city option:selected&#39;).val();
      //根据xmldom信息 找到指定的县市节点
      var xml_city = $(xmldom).find(&#39;City[CityID=&#39;+cid+&#39;]&#39;);
      // 获取对应所有地区节点
      var district = $(xml_city).find(&#39;Piecearea&#39;);
      $(&#39;#district&#39;).empty();
      $(&#39;#district&#39;).append(&#39;<option value="0">-请选择-</option>&#39;);
      district.each(function(k,v){
        var nm = $(this).attr(&#39;Piecearea&#39;);
        var id = $(this).attr(&#39;PieceareaID&#39;);
        $(&#39;#district&#39;).append(&#39;<option value=&#39;+id+&#39;>&#39;+nm+&#39;</option>&#39;);
      });
    }

위 내용은 Jquery+Ajax+xml을 사용하여 3단계 연결 효과 만들기의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.