You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Laravel项目中将选中的图片ID通过AJAX传递至Controller

问题解决方法

问题根源

  • 页面渲染阶段模态框内的表单action属性已经被后端固定为循环遍历最后一张图片的删除路由(也就是你看到的ID120对应的路由),不会动态跟随选中的图片变化
  • 原有deleteImage函数仅触发模态框显示,没有将选中图片对应的删除路由更新到表单的action属性上
  • showImage函数内写死了后端渲染的删除路由,没有使用当前选中图片对应的路由

修改步骤

1. 给模态框内的表单加ID,清空默认action

将模态框内的表单代码修改为:

<form action="" method="post" id="deleteGalleryForm">
    @csrf
    <!-- 其余模态框内容保持不变 -->

2. 修改小图点击事件,传入对应删除路由

修改遍历小图的onclick参数,把当前图片的删除路由传递给showImage函数:

@foreach($galleries as $gallery)
<div class="col-md-2">
    <img src="{{ asset("storage/{$gallery->image}") }}" class="img-fluid cursor-pointer" 
        onclick="showImage('{{ asset("storage/{$gallery->image}") }}', '{{ $gallery->id }}', '{{ route('products.galleries.delete', [$product->id, $gallery->id]) }}')">
    <br>
    <div class="text-center text-danger">{{ $gallery->id }}</div>
</div>
@endforeach

3. 修改JS函数,动态更新表单action

调整showImage和deleteImage函数逻辑:

function showImage(url, id, deleteRoute) {
    const image = `<img src="${url}" onclick="deleteImage('${deleteRoute}')" class="img-fluid cursor-pointer" />`;
    $('#showImage').html(image);
}

function deleteImage(deleteUrl) {
    // 把选中图片的删除路由更新到表单action
    $('#deleteGalleryForm').attr('action', deleteUrl);
    // 弹出模态框
    $('#delete').modal('show');
}

修改完成后,点击不同图片弹出的模态框会自动携带对应图片的删除路由,提交表单时就会把正确的ID传递给后端Controller。

内容的提问来源于stack exchange,提问作者user16277300

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 20:39:03