解决 Layui 本地 JSON 列表查询无效问题

作者:工具松鼠

时间:2026-10-23

浏览:309

本文分析 Layui 表格组件在使用本地 JSON 文件时,直接套用官网示例导致查询功能看似刷新实则无效的原因。核心问题在于未配置异步接口。文章提供了一种基于 show/hide 方法的本地演示方案,虽不建议用于生产环境,但可帮助开发者理解前端数据过滤逻辑。

文章目录

Layui 本地列表查询失效原因

Layui 支持直接渲染本地 JSON 文件以生成列表数据。然而,许多开发者在复制官网示例代码后发现,执行查询操作时虽然界面有刷新迹象,但实际数据并未更新。经过排查与重新研读官方文档,发现一个常被忽略的关键点:

Layui 本地列表查询失效原因

前端模拟查询的实现方案

官方文档明确指出,查询功能必须通过异步接口获取数据。因此,若不依赖后端服务,前端似乎无法实现真正的查询效果。为了进行本地演示,这里介绍一种较为简单的替代方法:利用 show() 和 hide() 方法手动控制表格行的显示与隐藏。请注意,此方法仅适用于演示,实际开发中不推荐使用。

以下是可直接复制使用的代码示例:

完整代码示例


<div class="demoTable">
 搜索ID:
 <div class="layui-inline">
 <input class="layui-input" name="id" id="demoReload" autocomplete="off">
 </div>
 <button class="layui-btn" data-type="reload">搜索</button>
</div>

<table class="layui-hide" id="LAY_table_user" lay-filter="user"></table>
<script src="js/layui/layui.js" charset="utf-8"></script>
<script>
 layui.use('table', function(){
 var table = layui.table;
 //方法级渲染
 var tabins = table.render({
  elem: '#LAY_table_user'
  ,url: 'new_file.json'
  ,cols: [[
  {checkbox: true, fixed: true}
  ,{field:'id', title: 'ID', width:80, sort: true, fixed: true}
  ,{field:'username', title: '用户名', width:80}
  ,{field:'sex', title: '性别', width:80, sort: true}
  ,{field:'city', title: '城市', width:80}
  ,{field:'sign', title: '签名'}
  ,{field:'experience', title: '积分', sort: true, width:80}
  ,{field:'score', title: '评分', sort: true, width:80}
  ,{field:'classify', title: '职业', width:80}
  ,{field:'wealth', title: '财富', sort: true, width:135}
  ]]
  ,id: 'testReload'
  ,page: true
  ,height: 315
  ,done:function(res){
  }
 });

 var $ = layui.$, active = {
  reload: function(){
  var demoReload = $('#demoReload');

  //执行重载
  table.reload('testReload', {
   page: {
   curr: 1 //重新从第 1 页开始
   }
   ,where: {
   key: {
    id: demoReload.val()
   }
   }
  });
  }
 };
 $('.demoTable .layui-btn').on('click', function(){
  search = $('#demoReload').val();
  $('.layui-table-fixed tbody tr').each(function(i){
   var id = $(this).children('td').eq(1).children('div').html();
   if(id.indexOf(search)>=0){
   $(this).show()
   $('.layui-table-main tbody tr').eq(i).show()
   }else{
   $('.layui-table-main tbody tr').eq(i).hide()
   $(this).hide();
   }
  });
 });

 });
</script>

</body>
</html>

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持本站。

实用工具推荐

电子包浆

绿化、压缩、噪点和虚拟水印,自由调节做旧程度。

使用 ›
图片压缩

选择画质和输出格式,预览压缩前后的大小。

使用 ›
相关文章