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

Laravel控制器接收jQuery传值存入数据库失败求助(附代码)

解决Laravel中jQuery AJAX传数据到控制器失败的问题

嘿,我看了你的代码,发现几个容易踩的小坑,帮你逐一排查并修正,应该就能解决问题了:

1. 先修复AJAX脚本的语法错误

你AJAX的data里最后一个键值对后面多了个逗号,这会导致JS语法错误,浏览器可能直接跳过这个请求。另外建议加上success和error回调,方便你快速查看请求结果:

$.ajaxSetup({ 
    headers: { 
        'X-CSRF-Token' : $('meta[name=_token]').attr('content') 
    } 
});
$.ajax({ 
    url:'/test', 
    type: 'POST', 
    dataType: 'JSON', 
    data: { 
        "name": "Name", 
        "color": "red"  // 去掉这里的多余逗号
    }, 
    success: function(res) {
        console.log('请求成功啦:', res);
    },
    error: function(xhr) {
        console.log('请求出错了:', xhr.responseText);
    }
});

2. 修正控制器的逻辑问题

你的控制器代码有两个明显的问题:

  • 如果不是AJAX请求,$data变量根本没定义,执行dd(json_decode($data))会直接报错;
  • Input::all()拿到的已经是数组了,不需要再用json_decode解析;
  • 你也没写实际存入数据库的逻辑呀😅

给你修正后的控制器代码(假设你有对应的模型,比如叫Test):

use Illuminate\Http\Request;
use App\Models\Test; // 记得引入你的模型

public function test(Request $request) {
    // 先判断是不是AJAX请求
    if($request->ajax()) {
        // 获取所有请求数据
        $requestData = $request->all();
        
        // 推荐加个数据验证,避免脏数据进库
        $validatedData = $request->validate([
            'name' => 'required|string|max:255',
            'color' => 'required|string|max:50',
        ]);
        
        // 存入数据库
        Test::create($validatedData);
        
        // 返回成功响应给前端
        return response()->json(['status' => 'ok', 'msg' => '数据保存成功!']);
    }
    
    // 非AJAX请求直接返回错误
    return response()->json(['status' => 'error', 'msg' => '非法请求'], 403);
}

注意:Laravel现在更推荐用注入Request实例的方式获取数据,比Input::all()更规范哦。

3. 确保路由配置正确

你的路由没写完,记得在routes/web.php里加上POST路由:

use App\Http\Controllers\YourControllerName; // 替换成你的控制器类名

Route::post('/test', [YourControllerName::class, 'test']);

4. 确认CSRF元标签存在

要确保你的blade模板头部有这个CSRF元标签,不然Laravel的CSRF保护会拦截你的AJAX请求:

<meta name="_token" content="{{ csrf_token() }}">

调试小技巧

  • 按F12打开浏览器控制台,看Network标签,检查AJAX请求的状态码:如果是419,就是CSRF验证失败;如果是500,就是控制器代码出错;
  • 可以先在控制器里写dd($request->all()),确认是否能拿到前端传的数据,再去写存库逻辑。

内容的提问来源于stack exchange,提问作者Amor.o

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 09:59:27