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

如何通过AJAX将JS二维数组传入Laravel控制器?

解决JS二维数组通过AJAX传入Laravel控制器的问题

嘿,我来帮你搞定这个问题~其实实现起来很简单,分两种常用的方案,根据你的需求选就行:

方案一:用POST请求(推荐,适合复杂/大数据组)

POST请求没有URL长度限制,更适合传递二维数组这类复杂数据,步骤如下:

1. 修改你的JS代码

调整AJAX的请求类型、内容类型,把数组转成JSON字符串传递,同时确保CSRF头正确:

$("#sendData").click(function() { 
    // 注意CSRF头的键要和Laravel默认一致:X-CSRF-TOKEN
    $.ajaxSetup({ headers: { 'X-CSRF-TOKEN' : '{{ csrf_token() }}' } }); 
    $.ajax({ 
        type: "POST", // 改成POST
        url: "/orders/example", 
        dataType: "json",
        contentType: "application/json", // 告诉后端我们传的是JSON格式
        data: JSON.stringify({ request: linePosition }), // 把二维数组转成JSON字符串
    }).done(function(msg){ 
        console.log("成功接收返回:", msg) 
    }).fail(function(msg) { 
        console.log("请求失败:", msg) 
    }); 
});

2. 控制器里接收数据

在你的ProductController的example方法里,用$request->json()来解析JSON数据:

use Illuminate\Http\Request;

public function example(Request $request)
{
    // 获取二维数组
    $twoDArray = $request->json('request');
    
    // 这里可以写你的业务逻辑,比如打印看看数组结构
    // dd($twoDArray);
    
    // 返回响应给前端
    return response()->json([
        'status' => 'success',
        'received_data' => $twoDArray
    ]);
}

3. 配置路由

在routes/web.php里添加POST路由:

use App\Http\Controllers\ProductController;

Route::post('/orders/example', [ProductController::class, 'example']);

方案二:用GET请求(适合小数据量数组)

如果你的二维数组内容不多,也可以用GET请求,jQuery会自动帮你序列化数组:

1. 调整JS代码

只需要确保CSRF头正确,直接传递数组即可:

$("#sendData").click(function() { 
    $.ajaxSetup({ headers: { 'X-CSRF-TOKEN' : '{{ csrf_token() }}' } }); 
    $.ajax({ 
        type: "GET", 
        url: "/orders/example", 
        dataType: "json", 
        data: { request: linePosition }, // 直接传二维数组,jQuery会自动序列化
    }).done(function(msg){ 
        console.log("成功接收返回:", msg) 
    }).fail(function(msg) { 
        console.log("请求失败:", msg) 
    }); 
});

2. 控制器里接收数据

直接用$request->input()就能拿到二维数组:

use Illuminate\Http\Request;

public function example(Request $request)
{
    $twoDArray = $request->input('request');
    
    // 业务逻辑...
    
    return response()->json([
        'status' => 'success',
        'received_data' => $twoDArray
    ]);
}

3. 配置路由

在routes/web.php里添加GET路由:

use App\Http\Controllers\ProductController;

Route::get('/orders/example', [ProductController::class, 'example']);

注意事项

  • CSRF验证:一定要确保AJAX请求里带了正确的X-CSRF-TOKEN头,否则Laravel会拒绝请求。
  • 数组大小:GET请求有URL长度限制,如果二维数组内容很多,优先选POST方案。
  • 调试:如果遇到问题,可以在控制器里用dd($twoDArray)打印接收的数组,或者在前端控制台看请求的参数是否正确。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 04:11:52