当前位置:首页 > 问答 > 正文

表格管理|数据查询 layui table查询后如何返回并展示数据

Layui Table查询后如何返回并展示数据?一篇看懂前后端协作全流程 🚀

📢 最新消息:Layui 3.0架构革新,表格组件迎来史诗级升级!

根据Layui官方2025年8月发布的v2.11.2稳定版,表格组件(Table)迎来重大更新:

  • 新增layui.extend()模块扩展机制
  • 模板引擎支持空白符压缩和子模板导入
  • 优化分页组件性能,修复Unicode空格处理问题
  • 兼容性提升至IE9+,但建议生产环境使用2.11.x最新版

🎯 前端实战:三步实现查询+展示全流程

步骤1:构建HTML基础结构

<!-- 搜索区域 -->
<div class="layui-form demoTable">
  <div class="layui-inline">
    <input class="layui-input" id="searchId" placeholder="请输入用户ID">
  </div>
  <button class="layui-btn" data-type="reload">立即搜索</button>
</div>
<!-- 表格容器 -->
<table id="userTable" lay-filter="userTable"></table>

步骤2:JavaScript核心逻辑

layui.use(['table', 'form'], function(){
  var table = layui.table;
  // 初始化表格
  var tableIns = table.render({
    elem: '#userTable',
    url: '/api/user/list', // 后端接口
    cols: [[
      {field:'id', title:'ID', width:80, sort: true},
      {field:'username', title:'用户名'},
      {field:'email', title:'邮箱'},
      {field:'createTime', title:'注册时间', templet:'#dateTpl'}
    ]],
    page: true,
    limits: [10,20,50],
    id: 'testReload'
  });
  // 监听搜索按钮
  $('.layui-btn').on('click', function(){
    tableIns.reload({
      where: {
        id: $('#searchId').val()
      },
      page: { curr: 1 }
    });
  });
});

步骤3:模板引擎优化(可选)

<script type="text/html" id="dateTpl">
  {{ d.createTime.replace(/T/g,' ').substring(0,19) }}
</script>

🔧 后端处理:Java SpringMVC示例

@Controller
@RequestMapping("/api/user")
public class UserController {
  @Autowired
  private UserService userService;
  @ResponseBody
  @RequestMapping("/list")
  public Map<String, Object> listUsers(
    @RequestParam(required = false) Integer id,
    @RequestParam(defaultValue = "1") int page,
    @RequestParam(defaultValue = "10") int limit
  ) {
    // 1. 构建查询条件
    UserQuery query = new UserQuery();
    if (id != null) query.setId(id);
    // 2. 执行分页查询
    Page<User> pageData = userService.findPage(query, page, limit);
    // 3. 构造Layui标准响应
    Map<String, Object> res = new HashMap<>();
    res.put("code", 0);
    res.put("msg", "");
    res.put("count", pageData.getTotal());
    res.put("data", pageData.getRecords());
    return res;
  }
}

💡 高级技巧:三大优化方向

自定义筛选条件(2025最新方案)

// 前端模板
<script type="text/html" id="filterTpl">
  <select name="status" lay-filter="statusFilter">
    <option value="">全部状态</option>
    <option value="1">激活</option>
    <option value="0">冻结</option>
  </select>
</script>
// JS监听
form.on('select(statusFilter)', function(data){
  tableIns.reload({
    where: { status: data.value }
  });
});

前端分页优化(减少服务器压力)

// 一次性加载全部数据
$.ajax({
  url: '/api/user/all',
  success: function(res){
    table.render({
      data: res.data,
      page: true,
      limits: [10,20,50]
    });
  }
});

实时数据更新(WebSocket方案)

// 建立WebSocket连接
var sock = new SockJS('/ws');
sock.onmessage = function(e){
  var data = JSON.parse(e.data);
  table.reload('testReload', {
    data: data.newRecords
  });
};

🚨 常见问题解决指南

Q1:表格不显示数据?

  • 检查后端返回的code是否为0
  • 确认data字段是否为数组格式
  • 使用浏览器开发者工具查看网络请求

Q2:分页按钮无效?

表格管理|数据查询 layui table查询后如何返回并展示数据

  • 确保page: true配置存在
  • 检查limitslimit参数是否正确
  • 验证后端是否返回count总条数

Q3:模板不生效?

  • 确认templet选择器ID是否正确
  • 检查模板内容是否包含非法字符
  • 使用{{ d.fieldName }}语法

2025年最新开发流程图

前端页面 → 用户操作 → 触发reload → 携带参数 → 后端接口 → 返回标准数据 → 表格刷新
          (点击搜索)      (where参数)      (JSON格式)

通过本文的实战案例和最新优化方案,相信您已经掌握了Layui Table从查询到展示的完整流程,立即动手实践,构建高效的数据管理界面吧! 💪

表格管理|数据查询 layui table查询后如何返回并展示数据

发表评论