简单的AJAX封装的三级联动

<!--做的省市县的一个三级联动 利用了ajax--手敲的代码 有错误 需谅解(lxl)>

<script type="text/javascript" src="js/ajax.js"></script>

<script type="text/javascript">

window.οnlοad=fonction(){

    ajax("get","city","type=1",true,function(request){

            var result=request.responseText;

            eval("var ss="+result);

            var pid = document.getElementById("pid");

    for(var i=0;i<ss.length;i++){

                    var opt=document.createElement("option");

                            opt.value=ss[i].code;

                            opt.text=ss[i].name;

                            pid.appendChild(opt);

}

},null,null);//这边的404 之类的异常先不处理

}

/*getcity方法传入一个参数provience 得到市级的name;

*/

     function getcity(provinceCode){
       ajax("get", "city","type=2"+"&"+"provinceCode="+provinceCode, true,function(request){  //provinceCode
           var result = request.responseText;
           eval("var ss="+result);

        //让市级恢复请选择的状态。
           var cid = document.getElementById("cid");
           cid.options.length=1;

        //让县级恢复请选择的状态。 这样不会造成累加循环。
           var tid= document.getElementById("tid");
            tid.options.length = 1;
            for (var i = 0; i < ss.length; i++) {
                    var opt = document.createElement("option");
                    opt.value = ss[i].code;
                    opt.text = ss[i].name;
                    cid.appendChild(opt);
            }
       }, null, null);
   }
         function getTown(cityCode){
             ajax("get","city", "type=3"+"&"+"cityCode="+cityCode, true, function(request){
                  var result=request.responseText;
                  eval("var ss="+result);
                  var tid= document.getElementById("tid");
                  tid.options.length = 1;
                
                  for (var i = 0; i < ss.length; i++) {
                      var opt = document.createElement("option");
                        opt.value = ss[i].code;
                        opt.text = ss[i].name;
                        tid.appendChild(opt);
                }
             }, null, null)
         }

</script>

  </head>
  <body>
<select id="pid"  οnchange="getcity(this.value);">
        <option>-请选择-</option>
</select>
<select  id="cid" οnchange="getTown(this.value)">
        <option>-请选择-</option>
</select>
<select id ="tid" >
        <option>-请选择-</option>
</select>
</body>
</html>

转载于:https://my.oschina.net/u/3164085/blog/822762

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
三级联动指的是在一个下拉列表中选择一个选项后,会根据该选项的值动态生成下一个下拉列表的选项。比如,选择一个省份后,那么第二个下拉列表中只会显示该省份的城市,再选择一个城市后,第三个下拉列表中只会显示该城市的区县。 使用Ajax可以实现三级联动功能。具体实现步骤如下: 1. 在页面中创建三个下拉列表,分别代表省、市、区县。 2. 给省份的下拉列表绑定一个onchange事件,当选中省份时触发事件。 3. 在事件中使用Ajax向后台发送请求,获取该省份的所有城市,并将城市的信息填充到市的下拉列表中。 4. 给市的下拉列表绑定一个onchange事件,当选中城市时触发事件。 5. 在事件中使用Ajax向后台发送请求,获取该城市的所有区县,并将区县的信息填充到区县的下拉列表中。 下面是一个简单Ajax三级联动示例: HTML代码: ``` <select id="province"> <option value="">请选择省份</option> <option value="1">北京</option> <option value="2">上海</option> </select> <select id="city"> <option value="">请选择城市</option> </select> <select id="area"> <option value="">请选择区县</option> </select> ``` JavaScript代码: ``` // 绑定省份下拉列表的onchange事件 document.getElementById('province').onchange = function() { var provinceId = this.value; // 发送Ajax请求获取城市数据 ajax('get', '/getCity', {provinceId: provinceId}, function(data) { // 根据返回的数据填充城市下拉列表 var citySelect = document.getElementById('city'); citySelect.innerHTML = '<option value="">请选择城市</option>'; for (var i = 0; i < data.length; i++) { var option = document.createElement('option'); option.value = data[i].id; option.text = data[i].name; citySelect.appendChild(option); } }); }; // 绑定城市下拉列表的onchange事件 document.getElementById('city').onchange = function() { var cityId = this.value; // 发送Ajax请求获取区县数据 ajax('get', '/getArea', {cityId: cityId}, function(data) { // 根据返回的数据填充区县下拉列表 var areaSelect = document.getElementById('area'); areaSelect.innerHTML = '<option value="">请选择区县</option>'; for (var i = 0; i < data.length; i++) { var option = document.createElement('option'); option.value = data[i].id; option.text = data[i].name; areaSelect.appendChild(option); } }); }; // 封装Ajax函数 function ajax(method, url, data, success) { var xhr = new XMLHttpRequest(); xhr.onreadystatechange = function() { if (xhr.readyState == 4 && xhr.status == 200) { var data = JSON.parse(xhr.responseText); success(data); } }; xhr.open(method, url, true); xhr.setRequestHeader('Content-Type', 'application/json;charset=UTF-8'); xhr.send(JSON.stringify(data)); } ``` 其中,/getCity和/getArea是后台接口,根据传入的省份id或城市id返回对应的城市或区县数据。在实际应用中需要根据具体情况进行修改。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值