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

Laravel 10点击删除无效果:数据未删除仅刷新页面求助

Laravel删除数据失败问题排查与解决

你的问题出在视图层的表单提交逻辑上——点击删除链接时并没有真正提交删除表单,只是触发确认弹窗后刷新了页面,删除接口根本没被调用,所以数据还留在数据库里。

错误原因

你用了<a>标签且设置了空的href="",点击时浏览器默认行为是跳转到当前页面(空链接等价于刷新)。虽然触发了confirm提示,但完全没触发表单提交,后端的destroy方法根本没执行。

修复方法

两种常用方案选其一即可:

方案一:把<a>换成提交按钮

直接用<button>替代<a>作为表单提交按钮,同时调整样式保持页面布局一致:

<ul class="dropdown-menu">
    <li>
        <form action="/barang/{{ $row->slug }}" method="POST">
            @method('delete')
            @csrf
            <button type="submit" class="dropdown-item border-0 bg-transparent text-start w-100"
                onclick="return confirm('Data will be deleted. Continue?')">
                <i class="bi bi-trash"></i> Hapus
            </button>
        </form>
    </li>
</ul>

方案二:让<a>点击时提交表单

保留<a>标签,但修改onclick事件,触发表单提交并阻止默认跳转:

<ul class="dropdown-menu">
    <li>
        <form action="/barang/{{ $row->slug }}" method="POST" id="delete-form-{{ $row->id }}">
            @method('delete')
            @csrf
            <a class="dropdown-item" href="#"
                onclick="if(confirm('Data will be deleted. Continue?')) { document.getElementById('delete-form-{{ $row->id }}').submit(); } return false;">
                <i class="bi bi-trash"></i> Hapus
            </a>
        </form>
    </li>
</ul>

这里给表单加了唯一ID(用$row->id避免重复),确认后提交对应表单,return false阻止默认跳转行为。

额外优化建议

  • 控制器的destroy方法可以简化:因为已经通过路由模型绑定拿到了Barang实例,直接调用delete()更简洁:
public function destroy(Barang $barang)
{
    $barang->delete();
    return redirect('/barang')->with('barangSuccess', 'Data Barang berhasil dihapus');
}
  • 确认下$row->slug的值是否正确,确保和数据库中对应数据的slug一致,路由模型绑定才能正常匹配。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.03 22:57:25