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

如何在Laravel中通过sendSignal路由向receiveSignal路由模拟发送并接收JSON数据?

问题解答:模拟Laravel路由间的数据传递

首先直接给结论:你当前的做法完全不可行。访问/sendSignal只会触发sendSignal方法并返回JSON给浏览器,不会自动调用/receiveSignal路由——receiveSignal方法根本没被执行,自然拿不到任何数据。

要实现从sendSignal向receiveSignal发送数据,你需要在sendSignal方法里主动发起一个HTTP请求到receiveSignal路由,下面是具体的修改方案:

步骤1:优化路由定义(可选但推荐)

给路由命名,后续调用时不用硬写URL,更灵活:

Route::get('/receiveSignal', 'SignalController@receiveSignal')->name('receiveSignal');
Route::get('/sendSignal', 'SignalController@sendSignal')->name('sendSignal');

步骤2:修改sendSignal方法,主动发起请求

Laravel自带了封装好的HTTP客户端(基于Guzzle),用它发送请求最便捷:

use Illuminate\Support\Facades\Http;

public function sendSignal()
{
    $data = [
        'spotid' => '421156',
        'name' => 'Test',
        'desc' => 'some desc',
        'StartofDetection' => '2018-01-17 22:22:22'
    ];

    // 方式1:发送表单格式的数据(Laravel默认会自动解析)
    $response = Http::post(route('receiveSignal'), $data);

    // 方式2:发送原始JSON数据(如果需要严格传递JSON格式)
    // $response = Http::withHeaders(['Content-Type' => 'application/json'])
    //                 ->post(route('receiveSignal'), json_encode($data));

    // 返回请求结果,方便你查看反馈
    return "信号已发送!receiveSignal的响应:" . $response->body();
}

步骤3:修改receiveSignal方法,正确接收数据

根据你选择的发送方式,调整接收逻辑:

use Illuminate\Http\Request;

public function receiveSignal(Request $request)
{
    // 如果你用方式1(表单数据),直接用Laravel的Request对象获取
    $data = $request->all();
    dd($data);

    // 如果你用方式2(原始JSON),可以继续用php://input,或者更符合Laravel风格的写法:
    // $rawJson = file_get_contents('php://input');
    // $data = json_decode($rawJson, true);
    // dd($data);

    // 或者直接用Request的json方法解析:
    // $data = $request->json()->all();
    // dd($data);
}

为什么原方案不行?

你原来的sendSignal只是把JSON字符串返回给浏览器,没有任何代码触发对/receiveSignal的请求。receiveSignal方法只有当有人访问/receiveSignal这个路由时才会执行,所以之前的代码根本不会走到receiveSignal的dd($test)这一步。

另外补充一点:GET请求的php://input通常是空的,所以如果要传递这类结构化数据,用POST请求更合理,这也是上面示例用POST的原因。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 08:28:44