В моем коде я использую 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); ?>);