Ajax---案例(省市区联动)用到template()模块

红色为:引入的框架或模块

天蓝色为:tamplate模块

淡黄色为:tamplate语法

淡绿色为:获取html中的元素

淡橙色为:使用tamplate函数传值(返回模板数据),并将数据拼接到html

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title>省市区联动</title>
    <link rel="stylesheet" type="text/css" href="/assets/bootstrap/dist/css/bootstrap.min.css">
    <style type="text/css">
        .container{
            padding-top:150px;
        }
    </style>
</head>
<body>
    <div class="container">
        <div class="form-inline">
            <div class="form-group">
                <select class="form-control" id="province">
                    <option>请选择省份</option>
                </select>
            </div>
            <div class=‘form-group‘>
                <select class="form-control" id="city">
                    <option>请选择城市</option>
                </select>
            </div>
            <div class=‘form-group‘>
                <select class=‘form-control‘ id="area">
                    <option>请选择县城</option>
                </select>
            </div>
        </div>
    </div>
    <!-- script -->
    <script type="text/javascript" src="/js/ajax.js"></script>
    <script type="text/javascript" src="/js/template-web.js"></script>
    <script type="text/html" id="provinceTpl">
        <option>请选择省份</option>
        {{each province}}
        <option value="{{$value.id}}">{{$value.name}}</option>
        {{/each}}
    </script>
    <script type="text/html" id=cityTpl>
        <option>请选择城市</option>
        {{each city}}
        <option value="{{$value.id}}">{{$value.name}}</option>
        {{/each}}
    </script>
    <script type="text/html" id="areaTpl">
        <option>请选择县城</option>
        {{each area}}
            <option value="{{$value.id}}">{{$value.name}}</option>
        {{/each}}
    </script>
    <script type="text/javascript">
        //获取省市区下拉框元素
        var province=document.getElementById("province");
        var city=document.getElementById("city");
        var area=document.getElementById("area");
        //获取省份信息
        ajax({
            type:‘get‘,
            url:‘http://localhost:3000/province‘,
            success:function(data){
                //将服务器返回的数据和html进行拼接
                var Prohtml=template("provinceTpl",{province:data});
                //console.log(Prohtml);
                //将拼接好的html字符串显示再页面中
                province.innerHTML=Prohtml;
            }
        });

        //为省份的下拉框添加值改变事件
        province.onchange=function(){
            //获取省份id
            var pid=this.value;

            //清空区下拉框中的数据
            var html=template(‘areaTpl‘,{area:[]});
            area.innerHTML=html;
            //根据省份id获取城市信息
            ajax({
                type:‘get‘,
                url:‘http://localhost:3000/cities‘,
                data:{
                    id:pid
                },
                success:function(data){
                    //console.log(data);
                    var Cityhtml=template("cityTpl",{city:data});
                    city.innerHTML=Cityhtml;
                }
            })
        }
        //当用户选择城市的时候
        city.onchange=function(){
            //获取城市id
            var cid=this.value;
            //根据城市id 获取区信息
            ajax({
                type:‘get‘,
                url:‘/areas‘,
                data:{
                    id:cid
                },
                success:function(result){
                    //console.log(result);
                    var Areahtml=template("areaTpl",{area:result});
                    //console.log(Areahtml);
                    area.innerHTML=Areahtml;
                }
            })
        }
    </script>
</body>
</html>

接口文档截图:

Ajax---案例(省市区联动)用到template()模块

相关推荐