继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

JQ完成省市联动的案例(返回Json)

Qing勇
关注TA
已关注
手记 13
粉丝 15
获赞 404

0, JSON语法

举个例子:使用JSON表示省市的结构:

{“id”:1,”name”:”广州”,”pid”:1} 代表了一个城市的信息

[

{“id”:1,”name”:”广州”,”pid”:1},

{“id”:2,”name”:”深圳”,”pid”:1}

1,设计页面

</head>
<body>
省份:
<select id="province">
    <option value="">-请选择-</option>
    <option value="1">广东省</option>
    <option value="2">湖南省</option>
    <option value="3">湖北省</option>
    <option value="4">河南省</option>
</select>
城市:
<select id="city">
    <option value="">-请选择-</option>
</select>
</body>

2,编写Servlet

public class CityServlet2 extends HttpServlet {
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        try {
            // 接收参数:
            int pid = Integer.parseInt(request.getParameter("pid"));
            // 调用业务层:
            CityService cityService = new CityService();
            List<City> list = cityService.findByPid(pid);
            // 将list集合转成JSON:
            // jsonlib , fastjson.
            /**
             * jsonlib的API中提供了两个类
             * JsonArray    :用于将数组或list集合转成json
             * JsonObject   :用于将Object或map集合转成json
             */
            // 去掉某些无关的属性:
            JsonConfig jsonConfig = new JsonConfig();
            jsonConfig.setExcludes(new String[]{"pid"});

            JSONArray jsonArray = JSONArray.fromObject(list,jsonConfig);
            System.out.println(jsonArray.toString());

            // 响应数据到页面:
            response.setContentType("text/html;charset=UTF-8");
            response.getWriter().println(jsonArray.toString());
        } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }

    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        doGet(request, response);
    }
}                                                   

3, 编写JS

$(function(){
    // 为第一个下拉列表添加事件:
    $("#province").change(function(){
        // 获得选中省份的值:
        var val = $(this).val();
        // 异步发送请求:
        $.post("/day16/CityServlet2",{"pid":val},function(data){
            // js直接将json识别为数组格式。
            // 获得市的下拉列表:
            var city = $("#city");
            city.html("<option value=''>-请选择-</option>");
            $(data).each(function(i,n){
                city.append("<option value='"+n.id+"'>"+n.name+"</option>");
            });
        },"json");
    });
});
打开App,阅读手记
2人推荐
发表评论
随时随地看视频慕课网APP