Использование JavaScript для отображения переменной Laravel

В моем коде я использую typeahead.js . Я использую Laravel 5, и мне нужно заменить переменные var states моей переменной {{ $jobs }} . Мне нужно перечислить все названия работы как массив.

В моем контроллере у меня есть

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

Я знаю метод цикла в javascript, но я не знаю, как «связывать» переменную моего клина в javascript. Кто-нибудь знает, как это сделать?

Я пробовал, в my.js

 var jobs = {{ $jobs }} 

Но это не сработает.

Для более сложных типов переменных, таких как массивы, лучше всего конвертировать их в 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.

Это работает для меня

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

Просто добавьте:

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

будет возвращать escaped html-сущности, поэтому вы не сможете зацикливаться на json-объекте в javascript, чтобы решить эту проблему, пожалуйста, используйте ниже:

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

или

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