Laravel项目中Ajax上传图片后无法无刷新在表格显示求助
解决Laravel Ajax上传后无刷新显示图片的问题
嘿,我一眼就看出问题出在哪了——你现在的成功回调里只是把data.image直接塞进表格单元格,这本质上只是一段纯文本(比如图片的文件名),浏览器根本不会把它当成图片来渲染。咱们只需要把这段文本包装成<img>标签,指向你存储图片的public/images目录就行。
修改后的成功回调代码
success:function(data) { $('.error').remove(); // 先构建图片标签:假设data.image返回的是纯文件名(比如xxx.jpg) const imageElement = `<img src="/images/${data.image}" alt="${data.name}" style="width: 70px; height: auto; object-fit: cover;">`; $('#table').append(` <tr class='post${data.id}'> <td>${data.id}</td> <td>${data.name}</td> <td>${data.bank_name}</td> <td>${data.bankbranch_location}</td> <td>${imageElement}</td> <td>${data.created_at}</td> <td> <button class='show-modal btn btn-info btn-sm' data-id='${data.id}' data-bank_id='${data.bank_name}' data-bankbranch_id='${data.bankbranch_location}' data-name='${data.name}' data-phone='${data.phone}'> <span class='fa fa-eye'></span> </button> <button class='edit-modal btn btn-warning btn-sm' data-id='${data.id}' data-bank_id='${data.bank_name}' data-bankbranch_id='${data.bankbranch_location}' data-name='${data.name}' data-phone='${data.phone}'> <span class='glyphicon glyphicon-pencil'></span> </button> <button class='delete-modal btn btn-danger btn-sm' data-id='${data.id}' data-bank_id='${data.bank_name}' data-bankbranch_id='${data.bankbranch_location}' data-name='${data.name}' data-phone='${data.phone}'> <span class='glyphicon glyphicon-trash'></span> </button> </td> </tr> `); }
关键细节说明:
- 核心改动:把原本的
data.image替换成了完整的<img>标签,src属性用/images/${data.image}——因为Laravel会把public目录作为网站根目录,这个路径能直接指向你存在public/images里的图片。 - 我换成了ES6模板字符串(反引号
`)来拼接HTML,比你原来的字符串拼接更清晰,也不容易因为引号嵌套出错。 - 给图片加了基础样式(固定宽度、自适应高度、保持比例),你可以根据自己的需求调整样式参数。
- 如果你的后端返回的
data.image已经是完整的相对路径(比如images/xxx.jpg),那直接把src改成${data.image}就行。
额外要检查的点:
- 确认后端返回的
data.image是正确的文件名/路径,没有多余的字符或者路径错误。 - 检查
public/images目录的权限,确保服务器能正常读取里面的图片文件。 - 如果是本地开发遇到缓存问题,可以给图片URL加个时间戳(比如
/images/${data.image}?t=${new Date().getTime()}),强制浏览器加载最新的图片。
内容的提问来源于stack exchange,提问作者nawshin.ahmed
相关产品推荐
相关产品推荐

