在Javascript中传递(laravel)数组

sen*_*nty 11 javascript php arrays jquery laravel

我想在JavaScript变量中传递/存储Laravel数组.我用过,->all()所以我得到的结果是这样而不是对象:

array:83 [?
  0 => 1
  1 => 11
  2 => 12
  ...
]
Run Code Online (Sandbox Code Playgroud)

我可以在视图中使用{{ $theArray }}.

无论我尝试什么,我都无法将其转换为javascript数组.

我试过了

var array = {{ $theArray }};

var array = {{{ $theArray }}};

我觉得我很接近,但我无法理解

小智 49

var app = @json($array);
Run Code Online (Sandbox Code Playgroud)

奇迹般有效

  • 您的答案是最简洁的,并且像其他方法一样工作。不知道为什么它不是所选答案。@DerekBrown所说的没有任何意义,因为其他答案也没有解释其工作原理。 (3认同)

Pra*_*lan 21

您可以使用 json_encode()

var array = {{ json_encode($theArray) }};
Run Code Online (Sandbox Code Playgroud)

或使用解析json字符串 JSON.parse()

var array = JSON.parse('{{ json_encode($theArray) }}');
Run Code Online (Sandbox Code Playgroud)

  • 如果使用这个{{}},我不知道为什么会出现"意外的令牌".然后我换到{!! !!}然后这将工作.也许是laravel版本 (4认同)

Fra*_* GV 9

这对我有用:)

var array =  {!! json_encode($theArray) !!};
Run Code Online (Sandbox Code Playgroud)


Zai*_*ain 9

有时,您可能会将一个数组传递给您的视图,目的是将其呈现为 JSON 以初始化 JavaScript 变量。例如:

<script>
    var app = <?php echo json_encode($array); ?>;
</script>
Run Code Online (Sandbox Code Playgroud)

但是,json_encode您可以使用@jsonBlade 指令代替手动调用。该 @json指令接受与 PHPjson_encode函数相同的参数:

<script>
    var app = @json($array);

    var app = @json($array, JSON_PRETTY_PRINT);
</script>
Run Code Online (Sandbox Code Playgroud)

@json指令对于播种 Vue 组件或 data-* 属性也很有用:

<example-component :some-prop='@json($array)'></example-component>
Run Code Online (Sandbox Code Playgroud)

https://laravel.com/docs/5.8/blade#blade-and-javascript-frameworks