gpt4 book ai didi

javascript - 如何在 Laravel 中将变量从脚本传递到 Controller

转载 作者:行者123 更新时间:2023-12-02 23:09:20 25 4
gpt4 key购买 nike

脚本中的变量current_restroom_id无法传递给Laravel中的Controller。

console.log('{{HomeController::getTrendingIssue('1',current_restroom_id)}}'); 
// but this is not passing script variable value.

请帮忙解决这个问题。

以下是blade文件中的相关代码:

<div class="p-t-20">
<div class="row">
<div class="col s12">

<style>
#chartdiv3 {
width: 100%;
height: 500px;
}
</style>

<!-- Chart code -->
<script>

var current_restroom_id = '14';

am4core.ready(function() {

// Themes begin
am4core.useTheme(am4themes_animated);
// Themes end

var chart = am4core.create("chartdiv3", am4charts.PieChart3D);
chart.hiddenState.properties.opacity = 0; // this creates initial fade-in

console.log('{{HomeController::getTrendingIssue('1', '14')}}'); // this works fine console.log('{{HomeController::getTrendingIssue('1',current_restroom_id)}}'); // but this is not passing script variable value.
console.log(current_restroom_id); // This prints 14 in console

chart.data = [
{
"issues" :'{{HomeController::getIssueName('1')}}',
"dislikes" :'{{HomeController::getTrendingIssue('1', current_restroom_id)}}'
},
{
"issues" :'{{HomeController::getIssueName('2')}}',
"dislikes" :'{{HomeController::getTrendingIssue('2', current_restroom_id)}}'
},
{
"issues" :'{{HomeController::getIssueName('3')}}',
"dislikes" :'{{HomeController::getTrendingIssue('3', current_restroom_id)}}'
},
{
"issues" :'{{HomeController::getIssueName('4')}}',
"dislikes" :'{{HomeController::getTrendingIssue('4', current_restroom_id)}}'
},
{
"issues" :'{{HomeController::getIssueName('5')}}',
"dislikes" :'{{HomeController::getTrendingIssue('5', current_restroom_id)}}'
},
{
"issues" :'{{HomeController::getIssueName('6')}}',
"dislikes" :'{{HomeController::getTrendingIssue('6', current_restroom_id)}}'
}
];
</script>
<div id="chartdiv3"></div>
</div>
</div>
</div>

这是 HomeController 函数:

public static function getTrendingIssue($issue_id, $restroom_id)

{
$issue_count = DB::table('ticket_manages')
->where(['ticket_manages.issue_id' => $issue_id, 'restroom_id' => $restroom_id])
->count();
return $issue_count;
}

最佳答案

不要从 Blade View 静态调用 Controller 方法!

您应该通过 Controller 传递变量来查看。

不要从 Controller 查询 mysql。这是模型。您应该使用 mysql get via model,并且必须从 Controller 调用它。

家庭 Controller :

public function index()
{
$restroom_id = 123; // for example
$trendingIssue = DB::table('ticket_manages')
->where(['ticket_manages.issue_id' => $issue_id, 'restroom_id' => $restroom_id])
->count();
return view('home', compact('trendingIssue'));
}

在 View 中:

{{$trendingIssue}}

但是您尝试通过 javascript 获取。您不能从 JavaScript 直接调用 PHP。如果您想动态地执行此操作,则必须使用 AJAX。

            "dislikes"  :'{{HomeController::getTrendingIssue('1', current_restroom_id)}}'

它永远不会起作用,因为你无法将 JS 变量传递给 PHP。 PHP 代码在 javascript 运行客户端之前运行服务器端。此 PHP 代码将尝试使用 current_restroom_id const 变量,该变量不存在。

关于javascript - 如何在 Laravel 中将变量从脚本传递到 Controller ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57448778/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com