使用 JavaScript 显示 Laravel 的变量

在我的代码中,我使用的是typeahead.js。我使用Laravel 5,我需要用我的变量替换。我需要将所有职位名称列为数组。var states{{ $jobs }}

在我的控制器中,我有

$jobs = Job::all(['job_title']);

我知道javascript中的look方法,但我不知道如何在javascript中“链接”我的刀片变量。有人知道如何吗?

我已经尝试过,在我的.js

var jobs = {{ $jobs }}

但这行不通。


答案 1

对于更复杂的变量类型(如数组),您最好的选择是将其转换为JSON,在模板中回显该变量并以JavaScript对其进行解码。喜欢这个:

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

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

<script>
    var jobs = JSON.parse("{{ json_encode($jobs) }}");
</script>

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


答案 2

这对我有用

jobs = {!! json_encode($jobs) !!};

通知

仅当可以保证不包含任何用户输入值时才使用此方法。使用输出值而不转义它们,这可能导致跨站点脚本 (XSS) 攻击。$jobs{!! ... !!}