📅  最后修改于: 2023-12-03 15:02:39.495000             🧑  作者: Mango
在 Laravel 应用程序中,您可能需要将某些数据从 PHP 方法传递到 JavaScript 函数。这可以通过将数据存储在单独的 HTML 属性中或通过将数据作为 URL 参数传递来完成。但是,这种方法都不太优雅,特别是当您需要传递多个参数时。
在这种情况下,您可以使用 Laravel 的路由系统将数据直接传递给 JavaScript 函数。本教程将教你如何在 Laravel 中使用路由名称将 ID 传递给 JavaScript 函数。
首先,您需要在 Laravel 中创建一个路由。可以在 web.php
文件中创建路由。本例中,我们将创建一个名为 user.profile
的路由:
Route::get('/user/{id}', function ($id) {
return view('user.profile', ['id' => $id]);
})->name('user.profile');
上述路由将传递用户 ID 并返回包含该 ID 的视图。
现在,您需要在HTML 模板中配置该路由。首先,找到要包含路由链接的标签。
例如,我们将在 <a>
标签中包含路由链接。在 href
值中,我们将 使用 route()
函数来生成正确的路由链接。
<a href="{{ route('user.profile', ['id' => $user->id]) }}">用户资料</a>
如您所见,我们在 route()
函数中将路由名称 user.profile
作为第一个参数,并将一个包含要传递的参数的数组传递作为第二个参数。
现在,您需要在 JavaScript 中定义一个处理该路由链接的函数。以下是一个示例函数:
function getUserProfile(id) {
$.ajax({
type: "GET",
url: "/user/" + id,
success: function(data) {
// process data
}
});
}
这就是传递 ID 的 JavaScript 函数。此函数将从路由系统接收 ID 并将其传递到 URL 参数中。
现在您已经定义了 JS 函数,您需要在 HTML 代码中使用该函数。这可以通过在用户单击 a
标签时,触发 getUserProfile()
函数实现。
<a href="#" onclick="getUserProfile({{ $user->id }})">用户资料</a>
如您所见,我们现在可以在 getUserProfile()
函数中接收传递给 Laravel 路由的 ID。
在这里,我们在 HTML 链接中添加 onclick
属性,并在单击链接时使用 getUserProfile()
函数。
通过这种方式使用 Laravel 路由,您可以轻松地在 JavaScript 中使用PHP产生的数据。而不是将数据存储在单独的标记或通过 URL 参数传递。
此外,使用js程序似乎不包括 csrf token,如果没有请注意这个问题。