在 blade 中使用 javascript/jquery 变量

Using javascript/jquery variables inside blade

我正在尝试在 laravel blade 中使用 javascript 变量。

但是我收到了这个错误。

我应该如何使用它?

var activeTab = $("ul#tablist li.active");
var floor = {!! \App\Floor::find(activeTab.attr('id')) !!}

Use of undefined constant activeTab - assumed 'activeTab'

不幸的是blade只是一个输出php的框架。你不需要那样做,而且无论如何你也做不到。那将是一个很大的安全问题。

如果你真的需要 floor 使用 @Rohan 建议的方法,javascript 直接:

var floor = activeTab.attr('id');

好的,所以你可以有另一条这样的路线:

    Route::post('/getFloorById', [
        'uses'  => 'YourController@getFloorById',
        'as'    => 'getFloorById'
    ]);

然后,在你的控制器中你有方法:

private function getFloorById($segments)
{
    $floorId = $segments[1];
    return \App\Floor::find($floorId);
}

最后,您需要 javascript 代码:

var floor = $.post('/getFloorById', {"id": activeTab.attr('id')});

这是ajax方法。请记住,您可能需要使用 echo 而不是 return。您可能需要像这样将代码包装到 json_encode(\App\Floor::find($floorId)) 中,但在大多数情况下,这应该可以完成工作。

您可能希望从 onclick 事件中调用 post,这样每次选项卡更改时您都可以获得新对象。