1. 程式人生 > 程式設計 >Ajax實現三級聯動效果

Ajax實現三級聯動效果

本文例項為大家分享了Ajax實現三級聯動效果的具體程式碼,供大家參考,具體內容如下

一、匯入資料表和gson.jar

該表包括了中國所有的省、市、縣、區,它們之間通過parentid關聯。

Ajax實現三級聯動效果

二、後端程式碼

由於每一級的資料都是根據上一級的id查詢而來,邏輯十分相似,故我們只需要一個介面就可以完成三級甚至更多級的聯動,在這個案例中我們的核心查詢就是select * from area where parentid=#{pid}

entity

package com.codeXie.entity;

import .io.Serializable;

public pIcKIguclass Area implements Serializable {
    private String areaid;
    private String areaname;
    private String parentid;
    private Integer arealevel;
    private Integer status;

    public Area() {
    }

    public Area(String areaid,String areanamepIcKIgu
,String parentid,Integer arealevel,Integer status) { this.areaid = areaid; this.areaname = areaname; this.parentid = parentid; this.arealevel = arealevel; this.status = status; } .......省略了對各屬性的set、get }

mapper

public interface AreaMapper {
    @Select("select * from area where parentid=#{pid}")
    List<Area> selectMore(Integer pid);
}

service

public interface AreaService {
    List<Area> findCity(int pid);
}

servlet

@WebServlet("/AreaServlet")
public class AreaServlet extends HttpServlet {
    @Override
    protected void service(HttpServletRequest req,HttpServletResponse resp) throws ServletException,IOException {
        resp.setCharacterEncoding("utf-8");
        resp.setContentType("text/html;charset=utf-8");
        String pid = req.getParameter("pid");
        AreaServiceImpl service = new AreaServiceImpl();
        List<Area> areas = service.findCity(Integer.parseInt(pid));
        String on = new Gson().toJson(areas);
        resp.getWriter().print(json);
    }
}

三、前端程式碼

 <script src="js/.js"></script>
    <script>
        function produceOption(id,list){
            console.log(list)
            $(id).empty()
            $(list).each((index,item)=>{
                $(id).append("<option value="+item.areaid+">"+item.areaname+"</option>")
            })
            
        }
        $(()=>{
            $.ajax({
                url:"AreaServlet",method:"post",           data:{pid:0},dataType:"json",success: function(res) {
                   produceOption("#proviance",res)
                   $("#proviance").prepend("<option selected='selected'>請選擇省份</option>")
                }
            })
            $("#proviance").change(function(){
                var pid = $(this).prop("value")
                $.ajax({
                url:"AreaServlet",data:{pid:pid},success: function(res) {
                   produceOption("#city",res)
                   $("#city").prepend("<option selected='selected'>請選擇城市</option>")
                }
            })
        })
        $("#city").on("change",function(){
            var pid = $(this).prop("value")
                $.ajax({
                url:"AreaServlet",success: function(res) {
                   produceOption("#country",res)
                   
                }
            })
        })
    })
    </script>
</head>
<body>
    <h2>三級聯動</h2>
    <hr/>
    <select name="pro" id="proviance">
        <option>選擇省份</option>
    </select>
    <select name="city" id="city">
        <option>選擇城市</option>
    </select>
    <select name="country" id="country">
        www.cppcns.com<option>請選擇區域</option>
    </select>
</body>
</html>

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支援我們。