layui ajax动态加载渲染select下拉框

本文介绍如何在layui框架中使用admin.req方法动态获取专业分类列表并填充到下拉菜单。通过AJAX请求从服务器获取数据,利用jQuery和layui.form组件更新下拉选项,并重新渲染表单。
<div class="layui-inline">
            <div class="layui-input-inline">
              <select name="label" id="catalog">
                <option value="">专业分类</option>
              </select>
            </div>
          </div>
function getCatalogList(){
          admin.req({
              url: layui.setter.api +'m-catalog-list'
              ,type: 'get'
              ,data: {
              }
              ,done: function(result){
                  $.each(result.data, function(index, item) {
                      $('#catalog')
                          .append(new Option(item.name, item.id));
                  });
                  layui.form.render("select");

              }

          });

      }

在使用 Layui 框架开发过程中,若希望实现下拉框(`select`)通过 AJAX 动态加载后端返回的数据,可以按照以下步骤进行操作: ### 1. 页面结构定义 首先,在 HTML 页面中定义一个下拉框元素,确保其 `name` 或 `id` 属性已设置,以便后续通过 JavaScript 操作。例如: ```html <div class="layui-form-item"> <label class="layui-form-label">学校</label> <div class="layui-input-block"> <select name="SchoolId" id="SchoolId" lay-verify="required" lay-filter="SchoolId" lay-search> <option value="">请选择学校</option> </select> </div> </div> ``` ### 2. 引入必要的模块 在 JavaScript 中使用 `layui.use()` 引入 `form` 和 `jquery` 模块,确保可以使用表单渲染AJAX 请求功能: ```javascript layui.use(['form', 'jquery'], function () { var form = layui.form; var $ = layui.jquery; }); ``` ### 3. 发起 AJAX 请求 在 `layui.use()` 中使用 jQuery 的 `$.ajax()` 方法向后端发起请求,获取数据并动态填充到下拉框中: ```javascript $(function () { $.ajax({ url: ctxPath + 'school/selectAll', // 后端接口地址 type: 'POST', async: false, success: function (result) { if (result.code === 0) { var list = result.data; var options = '<option value="">请选择学校</option>'; $.each(list, function (i, item) { options += '<option value="' + item.id + '">' + item.name + '</option>'; }); $('#SchoolId').html(options); form.render('select'); } } }); }); ``` ### 4. 动态渲染与反选 如果需要在页面加载后对下拉框进行反选操作(即默认选中某个值),可以通过 `val()` 方法设置值,并再次调用 `form.render()`: ```javascript $('#SchoolId').val($("#selectedSchoolId").val()); // 设置默认选中 form.render('select'); // 重新渲染下拉框 ``` ### 5. 注意事项 - **异步请求**:确保 AJAX 请求为同步(`async: false`),避免在数据未返回时执行渲染操作。 - **渲染机制**:每次对 `select` 内容进行修改后,必须调用 `form.render('select')` 才能生效。 - **错误处理**:在 `success` 回调中加入错误处理逻辑,防止数据异常导致页面崩溃。 ### 示例代码 以下为完整示例代码: ```javascript layui.use(['form', 'jquery'], function () { var form = layui.form; var $ = layui.jquery; $(function () { $.ajax({ url: ctxPath + 'school/selectAll', type: 'POST', async: false, success: function (result) { if (result.code === 0) { var list = result.data; var options = '<option value="">请选择学校</option>'; $.each(list, function (i, item) { options += '<option value="' + item.id + '">' + item.name + '</option>'; }); $('#SchoolId').html(options); $('#SchoolId').val($("#selectedSchoolId").val()); form.render('select'); } } }); }); }); ``` ###
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

flysnownet

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值