28

私のコードではtypeahead.jsを使用しています。私は Laravel 5 を使用しており、var statesを自分の{{ $jobs }}変数に置き換える必要があります。すべての役職を配列としてリストする必要があります。

私のコントローラーには

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

JavaScript のループ メソッドは知っていますが、JavaScript でブレードの変数を「リンク」する方法がわかりません。誰でも方法を知っていますか?

私はmy.jsで試しました

var jobs = {{ $jobs }}

しかし、それはうまくいきません。

4

11 に答える 11

37

配列などのより複雑な変数タイプの場合、最善の策は、それを JSON に変換し、それをテンプレートにエコーして、JavaScript でデコードすることです。このような:

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

このコードを機能させるには、PHP を実行する必要があることに注意してください。この場合、Blade テンプレート内に配置する必要があります。JavaScript コードが 1 つ以上の個別のファイルにある場合 (これは良いことです)、変数を渡すテンプレートにインライン スクリプト タグを追加するだけです。( JavaScriptコードの残りの部分よりもに実行されることを確認してください。通常document.readyはそれに対する答えです)

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

このようにするのが気に入らない場合は、別の ajax リクエストでデータをフェッチすることをお勧めします。

于 2015-03-27T19:13:12.437 に答える
12

laravel 6では、これは私にとってはうまくいきます

laravel ブレード ディレクティブの使用

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

@jsonディレクティブも使用

var jobs = @json($jobs);

PHP スタイルを使用する

 var jobs = <?php echo json_encode($jobs); ?>
于 2019-10-01T06:57:35.150 に答える
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); ?>);

于 2016-03-16T20:21:00.197 に答える
1

最も簡単な方法は@json()、Blade の新しいディレクティブを使用することです。

✓ Laravel 7.x でテスト済み

<script>
    var myVariable = @json($myVariable);
    console.log(myVariable);
</script>
于 2021-06-23T16:25:10.900 に答える