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

Laravel中通过AJAX传递记录ID至资源控制器编辑时出错

问题解决:Laravel AJAX传递ID到资源控制器编辑时的常量未定义错误

错误原因

你写的Blade模板代码{{ route('users.edit', id) }}里的id是JavaScript变量,但Blade是服务器端先解析的,PHP会把这个id当成自己的常量,而你没定义过这个常量,所以抛出错误。

三种可行的解决方法

方法一:路由模板替换ID

先让Blade生成带占位符的路由,再用JS替换成实际ID:

function editdetails(id) {
  // 用:id作为占位符生成路由模板
  let editUrl = "{{ route('users.edit', ':id') }}".replace(':id', id);
  $.ajax({
    type: 'GET',
    url: editUrl,
    success: function(data){
      console.log(data);
    }
  });
}

方法二:拼接ID到路由末尾

利用Laravel资源路由的格式,直接把ID拼在基础路由后面:

function editdetails(id) {
  $.ajax({
    type: 'GET',
    // 生成不带ID的基础路由,再拼接ID
    url: "{{ route('users.edit', '') }}/" + id,
    success: function(data){
      console.log(data);
    }
  });
}

方法三:从DOM元素的data属性获取预生成路由

如果触发函数的元素(比如按钮)和用户记录绑定,可以直接在Blade里预生成完整路由,存在元素的data属性里:

<!-- 假设$user是当前循环的用户模型 -->
<button onclick="editdetails(this)" data-edit-url="{{ route('users.edit', $user->id) }}">编辑详情</button>
function editdetails(btn) {
  // 从按钮的data属性里拿预生成好的完整路由
  let editUrl = btn.getAttribute('data-edit-url');
  $.ajax({
    type: 'GET',
    url: editUrl,
    success: function(data){
      console.log(data);
    }
  });
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 04:32:11