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

Laravel中Axios POST请求报500错误,GET正常如何解决?

解决Axios POST请求Laravel接口500内部服务器错误

你的问题出在几个关键细节上,逐一修正即可解决:

1. Axios请求传的是DOM元素而非输入值

你用getForms[0]获取的是整个表单元素,不是用户输入的内容,Laravel无法解析这种数据,导致报错。修改JS代码,获取每个输入框的value属性:

<script>
    var getForms = document.getElementsByClassName('form-control');
    function submitForm(e) {
        axios.post('/user/create', {
            full_name : getForms[0].value, // 增加.value获取输入值
            user_name : getForms[1].value,
            email : getForms[2].value,
            mobile : getForms[3].value,
            password : getForms[4].value,
        })
            .then(function (response) {
                console.log(response);
            })
            .catch(function (error) {
                console.log(error);
            });
        e.preventDefault();
    }
</script>

2. 验证规则与请求参数不匹配

控制器里验证规则要求first_name和last_name必填,但你的请求里只传了full_name,这会导致验证逻辑冲突。如果你的表结构使用full_name字段,直接修改验证规则:

$validator = Validator::make($request->all(), [
    'full_name' => 'required|max:255', // 改为请求中实际传递的字段
    'user_name' => 'required|max:255', // 补充user_name的必填验证
    'email' => 'required|email', // 建议增加邮箱格式验证
    'mobile' => 'required',
    'password' => 'required|min:6', // 补充密码长度验证
]);

3. 密码未加密存储

Laravel用户认证要求密码必须哈希存储,直接存明文会导致模型创建失败。修改创建用户的代码:

use Illuminate\Support\Facades\Hash; // 在控制器顶部引入Hash类

$user = UserAuth::query()->create([
    "full_name" => $full_name,
    "user_name" => $user_name,
    "email" => $email,
    "mobile" => $mobile,
    "password" => Hash::make($password), // 对密码进行哈希加密
]);

4. 模型类名大小写错误

Laravel模型类名遵循大驼峰命名规范,userAuth应该改为UserAuth,否则系统会找不到对应的模型文件,触发500错误。

额外检查:CSRF令牌

确保页面头部包含Laravel的CSRF令牌,Axios会自动读取该令牌完成验证:

<meta name="csrf-token" content="{{ csrf_token() }}">

完成以上修改后,POST请求即可正常运行。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 20:47:22