Рендеринг JSON из PHP в Javascript

Как преобразовать JSON из PHP/Laravel и преобразовать его в JSON Javascript. У меня уже есть строка JSON из PHP, единственная проблема в том, что она отображается только как строка. Я хочу, чтобы это был json в javascript. Пожалуйста, посмотрите мой код ниже.

$('#email').selectize({
    plugins: ['remove_button'],
    valueField: 'email',
    labelField: 'name',
    searchField: ['email', 'name'],
    options: [JSON.parse(JSON.stringify('{!! $users !!}'))]
});

Пример вывода $users:

{"name":"John Doe","email":"[email protected]"},{"name":"Frank Franky","email":"[email protected]"}

Я хочу, чтобы в JS все было так (для свойства options выше):

[{"name":"John Doe","email":"[email protected]"},{"name":"Frank Franky","email":"[email protected]"}]

Дополнительная ссылка:

https://selectize.github.io/selectize.js/

JSON - это JSON, разницы между javascript и php нет.

Devon 18.09.2018 05:34

Этот является JSON. Обертывание [] означает, что теперь это массив JSON ...

Ashley Brown 18.09.2018 05:36

Пример вывода $users не будет правильно stringify, потому что он недействителен, это список объектов, разделенных запятыми, тогда как кажется, что это должен быть массив. Только первый объект будет преобразован в строку, возвращая: {"name":"John Doe","email":"[email protected]"} и игнорируя остальные.

Tyler Roper 18.09.2018 05:38

Вы можете показать мне, как у вас $ пользователей? Потому что, чтобы получить JSON в {!! $users !!}, вам нужен {!! json_encode($users) !!}

dacastro4 18.09.2018 05:39

@ dacastro4 laravel уже выполняет это преобразование за вас, когда вы конвертируете коллекцию в строку.

Devon 18.09.2018 05:53
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
1
5
143
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Если $ users - это коллекция Laravel, нет смысла пытаться распечатать ее и вызвать для нее JSON.stringify. Это объект PHP, вам нужно выполнить преобразование строки на уровне PHP.

Однако Laravel автоматически преобразует коллекции в строку JSON, когда вы ее распечатываете. Просто используйте JSON.parse.

options: [JSON.parse('{!! $users !!}')]

Для коллекций Laravel:

(string) $users === $users->toJson() === json_encode($users)

Ты прав! Просто использовал json_encode, так как я настраиваю данные с помощью массива. Тогда используйте options: [JSON.parse('{!! $users !!}')].

Jie 18.09.2018 05:46

Имейте в виду, что JSON.parse не преобразует его в JSON, он преобразует его в объект или массив javascript.

Devon 18.09.2018 05:48

О, теперь я знаю. Спасибо за совет. Я думал, это JSON.

Jie 18.09.2018 05:50

Другие вопросы по теме