在blade内部使用javascript/jquery变量
我试图在LaravelBlade中使用javascript变量 但我得到了这个错误 使用这个我该怎么做在blade内部使用javascript/jquery变量,javascript,php,jquery,laravel,laravel-blade,Javascript,Php,Jquery,Laravel,Laravel Blade,我试图在LaravelBlade中使用javascript变量 但我得到了这个错误 使用这个我该怎么做 var activeTab = $("ul#tablist li.active"); var floor = {!! \App\Floor::find(activeTab.attr('id')) !!} 使用未定义的常量activeTab-假定为“activeTab” 不幸的是,blade只是一个输出php的框架。你不需要这样做,你无论如何也不能这样做。这将是一个重大的安全问题 如果您真的需
var activeTab = $("ul#tablist li.active");
var floor = {!! \App\Floor::find(activeTab.attr('id')) !!}
使用未定义的常量activeTab-假定为“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\u encode(\App\Floor::find($floorId))
中,但在大多数情况下,这应该可以完成工作
您可能希望从一个
onclick
事件调用post,这样每次选项卡更改时都可以得到新对象。通过对后端的ajax调用获得所需的发言权。您不应该试图以这种方式将php与jquery混合使用。$(“ul#tablist li.active”)
不是javascript。这是一个JQuery选择器……您是否在标记中扭曲javascript?如果您提供更多的刀片源代码,就很容易检查出哪里出了问题。只需使用var floor=activeTab.attr('id')代码>实际问题我可以通过var floor=activeTab.attr('id')获取id;但是我需要使用id获取对象,实际上我可以通过var floor=activeTab.attr('id')获取id;但是我需要使用IDI获取对象如果在DOM呈现之前无法获取id
,则需要使用ajax并使用activeTab.attr('id')调用php脚本
作为一个参数,可能更容易解释您想要做什么,就像您在上面尝试做的那样,这是不可能的。实际上,我需要“获取活动”选项卡并使用“动态获取地板对象”。另外还有一个套接字连接,它每秒都在接收数据。我需要检查它是否正确并采取行动。我能看到的最简单的方法是,我可能是错的,因为我没有完全理解您的代码,不看一下,但您可以从地板上抓取所有内容\App\Floor::findAll
(或类似的东西)并将其作为对象变量存储在javascript中。。。然后你可以用这个id抓取你需要的任何东西谢谢我这样用