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

Laravel Ajax表单POST请求出现500内部服务器错误求助

解决Laravel Ajax提交出现500内部服务器错误的问题

错误根源

从错误日志可以明确看到核心问题:

SQLSTATE[HY000]: General error: 1364 Field 'name' doesn't have a default value

你的users数据库表中name字段为必填项且未设置默认值,但创建用户时没有给该字段赋值,导致数据库插入操作失败,触发500内部服务器错误。

解决方案

方案1:补充name字段的输入与赋值

如果业务要求用户必须填写名称,按以下步骤修改:

  1. 在HTML表单中添加name输入框
<form class="mt-5 text-start" id="firstForm" method="post">
    <!-- 新增name输入 -->
    <label class="text-white main-font">Name</label>
    <input type="text" name="name" id="nameInput" class="form-control mb-2" placeholder="Enter your name here">
    
    <!-- 原有email、password等字段保持不变 -->
    <label class="text-white main-font">Email</label>
    <input type="email" name="email" id="emailInput" class="form-control mb-2" placeholder="Enter your email here">
    <label class="text-white main-font">Password</label>
    <input type="password" name="password" id="passwordInput" class="form-control password mb-2" placeholder="Enter your password here">
    <!-- 其余表单内容不变 -->
</form>
  1. 在控制器中为name字段赋值
public function create(Request $request) {
    $user = new User;
    $user->name = $request->name; // 新增name字段赋值
    $user->email = $request->email;
    $user->password = Hash::make($request->password);
    $user->save();

    // Ajax期望JSON响应,替换原返回view的代码
    return response()->json(['success' => true, 'message' => '注册成功']);
}
  1. 修正Ajax中的this指向问题
    箭头函数中this不指向表单元素,导致$(this).serialize()无法正确获取表单数据,修改为:
$("#firstForm").on("submit", (e)=>{
    e.preventDefault()
    let dataString = $(e.target).serialize(); // 用e.target指代当前表单
    // 其余代码保持不变
})

方案2:修改数据库表结构(如果允许name为空)

如果业务允许用户名称为空,可以直接修改users表,将name字段设置为允许NULL,或者给字段设置默认值(如空字符串)。

额外注意事项

确保User模型的$fillable属性包含需要赋值的字段,避免批量赋值错误:

class User extends Model
{
    protected $fillable = ['name', 'email', 'password'];
}

内容的提问来源于stack exchange,提问作者Thant Htet Aung

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 10:30:49