使用JavaScript显示Laravel的变量

Syl*_*lar 8 javascript php laravel laravel-5 laravel-blade

在我的代码中,我使用的是typeahead.js.我使用Laravel 5,我需要替换var states我的{{ $jobs }}变量.我需要将所有作业标题列为数组.

在我的控制器中我有

$jobs = Job::all(['job_title']);
Run Code Online (Sandbox Code Playgroud)

我知道javascript中的循环方法,但我不知道如何在javascript中"链接"我的刀片变量.谁知道怎么样?

我试过,在my.js中

var jobs = {{ $jobs }}
Run Code Online (Sandbox Code Playgroud)

但那不行.

luk*_*ter 23

对于像阵列这样的更复杂的变量类型,最好的办法是将其转换为JSON,在模板中回显并在JavaScript中解码.像这样:

var jobs = JSON.parse("{{ json_encode($jobs) }}");
Run Code Online (Sandbox Code Playgroud)

请注意,PHP必须运行此代码才能使其正常工作.在这种情况下,您必须将其放入Blade模板中.如果您将JavaScript代码放在一个或多个单独的文件中(这很好!),您只需在模板中添加内联脚本标记,然后传递变量即可.(只需确保它其余JavaScript代码之前运行.通常document.ready是答案)

<script>
    var jobs = JSON.parse("{{ json_encode($jobs) }}");
</script>
Run Code Online (Sandbox Code Playgroud)

如果您不喜欢这样做的想法,我建议您在单独的ajax请求中获取数据.


Kar*_*mir 12

这适合我

jobs = {!! json_encode($jobs) !!};
Run Code Online (Sandbox Code Playgroud)

  • 假设 $jobs 不是客户端控制的,并且不受各种注入的影响。 (2认同)

Jig*_*sar 11

laravel 6这对我有用

使用 Laravel 刀片指令

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

也使用@json指令

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

使用 php 风格

 var jobs = <?php echo json_encode($jobs); ?>
Run Code Online (Sandbox Code Playgroud)


Jim*_*bor 5

只是添加到上面:

var jobs = JSON.parse("{{ json_encode($jobs) }}");

将返回转义的 html 实体,因此您将无法在 javascript 中循环遍历 json 对象,要解决此问题,请在下面使用:

var jobs = JSON.parse("{!! json_encode($jobs) !!}");

或者

var jobs = JSON.parse(<?php echo json_encode($jobs); ?>);