Layui上传组件如何实现上传成功后自动在指定容器展示列表

小浩大大_6550

小浩大大_6550

2026-07-08

306人浏览

原创

done回调中append DOM是最直接的上传成功后展示列表方式,需用服务器返回的真实文件地址插入可操作条目,避免混淆预览逻辑,指定容器须提前存在且每次append前清空,多文件时注意响应数据结构。

done 回调里 append DOM 是最直接的写法

上传成功后展示列表,核心动作发生在 done 回调里——它拿到服务器返回的真实文件地址(如 res.data.url 或 res.msg),此时才该往页面插入可点击、可删除的条目。

常见错误是把预览逻辑(before 或 preview)当成“上传成功后展示”,结果用户看到的是本地 base64 图,而非服务器上已存的正式链接,一旦刷新就丢失。

  • 指定容器必须提前存在,比如 <div id="file-list"></div>,不能靠 done 里动态创建父容器再塞内容
  • 每次 append 前建议先清空:$('#file-list').empty(),避免重复提交时列表越积越多
  • 如果要支持多文件,done 里别只取 res.data[0],得确认后端返回的是数组还是单对象;多数场景下,Layui 每次只传一个文件,所以 done 会触发多次
  • 示例片段:
    done: function(res) {
      if (res.code === 0) {
        const item = <div class="file-item">
          <a href="%24%7Bres.data.url%7D" target="_blank">${res.data.name || '下载'}</a>
          <button class="layui-btn layui-btn-danger layui-btn-xs" data-url="${res.data.url}">删除</button>
        </div>;
        $('#file-list').append(item);
      }
    }

用变量维护文件数组再统一渲染更可控

当需要排序、批量删除、或提交时按顺序传参,光靠直接 append DOM 不够——DOM 顺序和数据顺序容易脱节。推荐用一个全局数组(如 uploadedFiles = [])存每次上传成功的元信息,再集中渲染。

这么做能绕过 DOM 操作的副作用,比如事件绑定错位、重复追加、或移动端 click 失效等问题。

深蓝色网站后台管理系统layui框架模板-AdminPro
深蓝色网站后台管理系统layui框架模板-AdminPro

一款深蓝色网站后台管理系统layui框架模板

下载
  • 在 done 里 push 数据:uploadedFiles.push({ name: res.data.name, url: res.data.url, id: res.data.id });
  • 单独写个 renderFileList() 函数,遍历 uploadedFiles 生成 HTML 字符串,一次性 $('#file-list').html(...)
  • 删除操作不要直接 $(this).closest('.file-item').remove(),而是从数组里 splice 对应项,再重 render——否则数组和视图永远不同步
  • 注意:如果后端返回的 id 是数据库主键,把它存在 data-id 属性里,后续删除接口就能精准传参

别漏掉样式和交互补丁

纯 DOM 插入后,没样式就是一堆裸链接;没事件绑定,点不了也删不掉。这两块不是可选,是必须补上的最小闭环。

  • 给容器加基础样式:#file-list { padding: 5px 0; },每个条目加 display: flex; align-items: center; justify-content: space-between;
  • 删除按钮事件必须用事件委托,因为元素是动态添加的:$('#file-list').on('click', '.layui-btn-danger', function() { ... })
  • 如果列表里混了图片,建议加 <img src="%24%7Burl%7D" style="max-width:90%">,但要先判断 /image\//.test(url),避免非图 URL 报错
  • 移动端点击区域太小?给整个 .file-item 加 padding: 8px 12px,比只点按钮更友好

回显已有文件时不能只靠 upload.render

页面加载后要显示“之前已上传的文件”,这个动作和上传流程无关,是独立的数据回填逻辑。很多人误以为调一次 upload.render() 就能自动回显,其实它只管新上传,不管历史数据。

  • 必须在页面 ready 后,主动请求后端接口(如 /api/files?bizId=123),拿到已有文件列表数组
  • 拿到数据后,手动调用你的 renderFileList(files),而不是等 upload 实例触发任何回调
  • 别把回显逻辑塞进 upload.render 的配置里——elem 只是触发上传的按钮,不是展示区
  • 如果 upload 组件绑定了 bindAction(比如“上传”按钮),确保回显完成后再初始化 upload,否则可能干扰初始状态
实际落地时,最易被忽略的是「回显与新增共用同一套渲染函数」这件事——很多人写了两套逻辑,一套在 done 里拼 HTML,一套在页面加载时用模板引擎重写,结果改一处漏一处。保持渲染入口唯一,才能稳住列表状态。

相关文章

PHP速学视频免费教程(入门到精通)
PHP速学视频免费教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

相关标签:

layui

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
ajax教程
ajax教程

php中文网为大家带来ajax教程合集,Ajax是一种用于创建快速动态网页的技术。通过在后台与服务器进行少量数据交换,Ajax可以使网页实现异步更新。这意味着可以在不重新加载整个网页的情况下,对网页的某部分进行更新。php中文网还为大家带来ajax的相关下载资源、相关课程以及相关文章等内容,供大家免费下载使用。

2023.06.14

2680

4

ajax中文乱码解决方法
ajax中文乱码解决方法

ajax中文乱码解决方法有设置请求头部的字符编码、在服务器端设置响应头部的字符编码和使用encodeURIComponent对中文进行编码。本专题为大家提供ajax中文乱码相关的文章、下载、课程内容,供大家免费下载体验。

2023.08.31

340

5

ajax传递中文乱码怎么办
ajax传递中文乱码怎么办

ajax传递中文乱码的解决办法:1、设置统一的编码方式;2、服务器端编码;3、客户端解码;4、设置HTTP响应头;5、使用JSON格式。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2023.11.15

2513

5

ajax网站有哪些
ajax网站有哪些

使用ajax的网站有谷歌、维基百科、脸书、纽约时报、亚马逊、stackoverflow、twitter、hacker news、shopify和basecamp等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2024.09.24

1141

6

Kratos框架Protobuf接口定义与代码生成合集
Kratos框架Protobuf接口定义与代码生成合集

本专题讲解Kratos框架接口定义体系,涵盖proto编写规范、proto add/client/server生成命令、http注解路由、validate校验、OpenAPI文档生成、跨服务proto复用与兼容性设计。

2026.10.10

0

15

C++虚函数怎么定义和调用
C++虚函数怎么定义和调用

C++虚函数是实现运行时多态的重要机制。本专题从virtual关键字的基本用法入手,介绍基类与派生类之间的函数重写、基类指针调用派生类方法,以及动态绑定的执行过程,帮助初学者掌握虚函数的核心语法。

2026.10.10

0

26

C++类与对象的封装方法教程
C++类与对象的封装方法教程

C++封装是面向对象编程的核心特性之一,通过类将数据与操作数据的函数组织在一起,并利用访问权限控制外部访问。本专题介绍类的定义、成员变量、成员函数以及public、private和protected的使用方法,帮助初学者掌握封装的基本原理。

2026.10.10

0

32

C++构造函数定义与调用方法
C++构造函数定义与调用方法

C++构造函数用于初始化类对象,是面向对象编程的重要基础。本专题从构造函数的定义、声明和调用入手,介绍默认构造函数、带参数构造函数、拷贝构造函数及成员初始化列表,帮助初学者掌握对象创建与初始化的基本方法。

2026.10.10

0

16

Kratos框架零基础入门教程
Kratos框架零基础入门教程

本专题整理Kratos框架入门内容,涵盖Go环境准备、kratos CLI安装升级、new命令创建项目、目录结构分层说明、服务启动与双协议端口、依赖下载报错排查,帮助开发者快速跑通第一个Kratos框架微服务应用。

2026.10.10

0

15

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
ThinkPHP配置开发与CMS后台实战
ThinkPHP配置开发与CMS后台实战

共87课时 | 12.8万人学习

第二十三期_综合实战
第二十三期_综合实战

共89课时 | 11万人学习

Layui 快速入门精讲
Layui 快速入门精讲

共5课时 | 1.6万人学习