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

时间:2016-02-23 18:21:09

标签: javascript php laravel laravel-5

控制器

在我的控制器中,我在这个变量$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 / View中访问此变量。

查看

index.blade.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中访问控制器变量的最佳方法是什么?

2 个答案:

答案 0 :(得分:2)

如果$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) !!};

答案 1 :(得分:1)

尝试json_encode()

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

并从您的观点

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