在 Javascript 中访问控制器变量的最佳方法是什么?

What is the best way to access controller variables within Javascript?

本文关键字:最佳 方法 是什么 变量 控制器 Javascript 访问 访问控制      更新时间:2023-09-26

Controller

在我的控制器中,我在这个变量中有一个数组存储$month_g

dd($month_g);

我得到了

array:12 [▼
  0 => array:2 [▼
    "up_bytes" => 277664452
    "down_bytes" => 198868462
  ]
  1 => array:2 [▼
    "up_bytes" => 0
    "down_bytes" => 0
  ]
  2 => array:2 [▶]
  3 => array:2 [▶]
  4 => array:2 [▶]
  5 => array:2 [▶]
  6 => array:2 [▶]
  7 => array:2 [▶]
  8 => array:2 [▶]
  9 => array:2 [▶]
  10 => array:2 [▶]
  11 => array:2 [▶]
]
return view('page.index', get_defined_vars());

我希望能够在我的JS/视图中访问此变量。

<小时 />

视图

索引刀片.php

我试过了

@extends('layouts.internal.master')
@section('content')
..... // content in HTML
@stop
@section('pagescripts')
    <script>
        console.log('{{$month_g}}');
    </script> 
@stop
<小时 />

结果

我一直得到

htmlentities() 期望参数 1 为字符串,给定数组

但是 console.log() 能够打印出一个数组。

<小时 />

问题

我该如何console.log出来?我在这里错过了什么?

在Javascript中访问控制器变量的最佳方法是什么?

如果$month_g是一个PHP数组,你需要首先将其转换为JSON,以便javascript可以使用它。

<script>
var month_g = <?php echo json_encode($month_g) ?>;
console.log(month_g);
</script>
PHP

json_encode 方法是将 PHP 变量输出为 JavaScript 变量的最安全方法。即使您认为变量是整数或简单字符串,为了安全起见,无论如何都要json_encode它。

旁注,如果你愿意,你也可以使用Laravel的方式代替PHP标签。请注意,您需要使用 {!! 而不是 {{,以免转义输出。

<script>
var month_g = {!! json_encode($month_g) !!};

尝试 json_encode()

 return view('page.index', ['month_g' => json_encode($month_g)];

从你的角度来看

@section('pagescripts')
<script>
    console.log('{!! $month_g !!}');
</script> 
@stop