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

Laravel SPA删除产品后弹窗显示JSON数据问题求助

解决Laravel SPA删除产品后弹出JSON响应的问题

问题根源

后端destroy方法返回JSON格式响应(如{"id":92})时,浏览器会将其识别为可展示内容,因此弹出弹窗;若移除返回语句,Laravel默认返回无响应体的200状态码,Inertia无法识别有效响应,进而触发页面重载。

可行解决方案

方案1:后端返回204 No Content状态码

这是RESTful API中DELETE请求成功的标准响应方式,既符合规范,又能让Inertia正确处理,避免弹窗和页面重载。修改ProductController.php的destroy方法:

public function destroy(Product $product)
{
    $product->delete();

    return response()->noContent();
}

方案2:前端配置Inertia请求拦截响应

若需保留后端返回数据,可在Inertia的delete请求中添加onSuccess钩子,主动处理响应并阻止默认行为:

Inertia.delete(`/products/${productIdToDelete.value}`, {
  preserveScroll: true,
  onSuccess: (response) => {
    // 按需处理响应数据
    console.log('已删除产品ID:', response.data.id);
    // 阻止Inertia默认响应处理逻辑
    return false;
  },
  onFinish: () => {
    closeModal();
    const index = products.value.findIndex(product => product.id === productIdToDelete.value);
    if (index !== -1) {
      products.value.splice(index, 1);
    }
  },
});

优先推荐方案1,它符合HTTP规范,代码改动最小,能彻底解决弹窗与页面重载问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.27 18:50:55