zoukankan      html  css  js  c++  java
  • 从数据库中获取信息显示在select下拉框中并实现联动

    需要解决的有以下几个问题:

    1.ajax请求数据库中的数据

    2.将数组信息显示在select下拉框的option中,$.each(data, function(index, item) {}})遍历数组data

    3.onchange事件与on()函数绑定change事件委托

    一、ajax请求数据库中的数据实现联动

    一般要select的联动效果都可参考省市区的三级联动。参考链接:https://c.runoob.com/codedemo/3490

    但是我今天做的楼栋,单元,楼层、房间号 之间的联动要从数据库获取。因为四者之间的关系非常复杂,所以为了使前端页面的实现更加简洁,思路更清晰,在后台就数据库中,将数据就进行了处理,并向前端提供了四个接口。

    ①根据社区id获取楼栋信息

    ②根据社区id、楼栋(改变) 获取单元号

    ③根据社区id、楼栋、单元(改变)获取楼层

    ④根据社区id、楼栋、单元、楼层(改变)改变获房间号

    1.创建ajax请求数据库中的数据

    function ajaxRequest(params, ipPort, url, callback) {
                    var mData = params;
                    mData = JSON.stringify(mData);
                    $.ajax({
                        type: "post",
                        url: ipPort + url,
                        async: true,
                        dataType: "json",
                        contentType: "application/json",
                        data: mData,
                        xhrFields: {
                            withCredentials: true
                        },
                        success: function(result) {
                            callback(result);
                        },
                        error: function(error) {
                            alert("请求出错");
                        }
                    });
                }

    2.将从数据库中获取到的数组进行遍历显示与select下拉列表中

    html:

            楼栋:<select id="buildingSelect">
                        <option value=''>-请选择楼栋-</option>
                    </select>

    js:

    //根据社区id获取楼栋信息
                function searchBuilding() {
                    var mData = {
                        "communityId": "0002"
                    };
                    var ipPort = "http://127.0.0.1:8080/dsjh/";
                    var mUrl = "dcs/c45b330bc62144779be0859e99965c8a/select";
                    ajaxRequest(mData, ipPort, mUrl, function(result) {
                        // console.log(result);
                        //请求结果处理
                        if (result.code == 200) {
                            //请求成功
                            var data = result.data;
                            console.log(data);
                  //each遍历处理data $.each(data, function(i, item) { if (item == null) { return; } $("
    <option></option>") .val(item["building_id"])//选项的value值 .text(item["building_name"]//选项的text值) .appendTo($("#buildingSelect")); }); } }); }

    3.获取选中项的value值 并添加onchange事件。

    html:

           楼栋:<select class="buildingSelect" onChange="selectChange(this.value)">
                    <option>
                        -请选择-
                    </option>
                </select>

    若出现onchange 事件 is not defined错误 ,有this,改成事件委托写法

      原因:函数作用域问题。应该将函数,移到事件处理程序之外。

    原来写法

    html:

    js:

     

    改成 :

    html:

    js:

    this,event 获取当前选中的值

     

     onchange是为当前已存在的元素添加的事件
    on是通过事件委托的方式,为目前存在的以及未来可能存在的指定元素,添加的事件

  • 相关阅读:
    XVI Open Cup named after E.V. Pankratiev. GP of Ekaterinburg.
    2017 Multi-University Training Contest
    spring IOC快速入门,属性注入,注解开发
    hibernate注解开发,三种查询语句
    hibernate主键生成策略,一级缓存,一对多关系配置
    struts2值栈,OGNL表达式,interceptor
    Oracle基础进阶
    Oracle基础
    mysql和Oracle的简单比较
    Linux的基础命令
  • 原文地址:https://www.cnblogs.com/SallyShan/p/12968615.html
Copyright © 2011-2022 走看看