如何修复使用URL从React向Laravel发送数据时出现的“Page not found”错误?

g6ll5ycj  于 2023-06-07  发布在  React
关注(0)|答案(1)|浏览(121)

我想使用URL从react发送数据到laravel。
React:

<button id="app" onClick={() => handleApproveClick(item.linkT, item.linkR, item.game_id, item.decx)}>Approve</button>
function handleApproveClick(linkT, linkR, gameId, decx) {
    const data = {
        linkT: linkT,
        linkR: linkR,
        gameId: gameId,
        decx: decx
    };
    window.location.href = `http://127.0.0.1:8000/approve/${data.gameId}/${encodeURIComponent(data.linkR)}/${data.decx}/${encodeURIComponent(data.linkT)}`;
}

在React方面,一切都很好,但在指向laravel的链接中,我看到页面未找到。
Laravel:

Route::get('/approve/{game_id}/{linkR}/{decx}/{linkt}', function($game_id, $decx, $linkt, $linkR) {
    dd($linkt.$linkR.$game_id.$decx);
});

我开始删除变量,看看问题在哪里,我发现这是导致它的链接。
如果我用途:

Route::get('/approve/{game_id}/{decx}

它工作正常,但当我添加链接

get('/approve/{game_id}/{linkR}/{decx}/{linkt}

页面没有找到

knpiaxh1

knpiaxh11#

我建议您传递linkTlinkR作为查询参数。

<button id="app"
    onClick={() => handleApproveClick(item.linkT, item.linkR, item.game_id, item.decx)}
>Approve</button>

function handleApproveClick(linkT, linkR, gameId, decx) {
    const data = {
        gameId: gameId,
        decx: decx
    };

    const queryParams = new URLSearchParams({
        linkT: linkT,
        linkR: linkR
    });

    window.location.href = `http://127.0.0.1:8000/approve/${data.gameId}/${data.decx}?${queryParams.toString()}`;
}

并相应地修改Route,以便可以从查询字符串中检索输入:

Route::get('/approve/{game_id}/{decx}', function($game_id, $decx) {
    $linkR = request()->query('linkR');
    $linkT = request()->query('linkT');

    dd($linkT.$linkR.$game_id.$decx);
});

如果出现路由未找到错误,请确保使用php artisan route:cache清除路由缓存。

相关问题