Intereting Posts
Загрузка файла Laravel Почему sprintf не уверен в 5 раунде? как отправить содержимое узла в xml на другую страницу с помощью php? не удалось открыть поток: Ошибка таймаута соединения – Themoviedb form_widget с именем динамической формы PHP. Предоставляет ли PDO цитату из SQL Injection? Laravel Mail :: отправить, как передавать данные на почту Посмотреть Как передать соединение БД другому классу? Регулярное выражение не работает должным образом с турецкими персонажами php / mysql Обновление не работает symfony2 программно аутентифицирует пользователя Блокирование входа пользователя с определенным уровнем разрешений, а затем отображение предупреждений, чтобы сообщить им, почему Принудительная страница для перезагрузки с сервера вместо загрузки кешированной версии phpMyAdmin эквивалентен MySQL для Redis? QuickBooks IPP v3 получает ошибку 3200 при добавлении счета-фактуры

передача объектов PHP в javascript

У меня есть объекты в php, каждый из которых представляет «элемент» и всю связанную с ним информацию.

И когда пользователь просматривает страницу, эти объекты должны быть переданы в javascript. В идеале, отражая одну и ту же структуру, я могу использовать Raphael для отображения каждого элемента и его информации в виде отдельных фигур на моем сайте.

Однако, как вы получаете объект от php до javascript?

Вы можете преобразовать объект PHP в массив, а затем использовать функцию JSON для его кодирования. После этого расшифруйте его с помощью JavaScript. Вот несколько основных шагов:

  1. Преобразуйте объект PHP в массив.

  2. Использование json_encode() для кодирования этого массива PHP.

  3. Передавать JSON-кодированные данные в PHP

  4. Декодируйте JSON из JavaScript с помощью JSON.parse или вы можете использовать jQuery.parseJSON для этого.

Это интересное руководство по передаче объекта JavaScript в объект PHP . Вам может показаться, что это полезно, просмотрев некоторые другие видео / связанные видео.

Надеюсь это поможет.

Поздний ответ, но я очень удивлен, что никто не упомянул, что такое, возможно, «правильный» способ развернуть эту функциональность.

Внедрите интерфейс JsonSerializable на свой объект. Этот интерфейс определяет один абстрактный метод, jsonSerialize . Этот метод должен возвращать представление массива вашего объекта.

jsonSerialize при попытке использовать json_encode для объекта. Вы можете рассматривать этот интерфейс как своего рода «магический метод», специфичный для собственной функции кодирования JSON, эквивалентный __toString для строк.

Введя его в действие, у вас есть объект, который выглядит так:

 class MyFoo implements JsonSerializable { public $bar = 'hello'; public $baz = 'world'; public function jsonSerialize () { return array( 'bar'=>$this->bar, 'baz'=>$this->baz ); } } $myFooInstance= new MyFoo(); echo json_encode($myFooInstance); // {"bar":"hello","baz":"world"} 

Когда я реализую это в своих проектах, я обычно помещаю метод toArray в объекты, который генерирует массив, и я использую jsonSerialize :

public function jsonSerialize () { return $this->toArray(); }

… таким образом я могу также использовать форму массива, если я так хочу. Это также удобно, если вы реализуете сериализацию объектов с помощью __sleep

Документация

Я использую это:

 <script> var js_data = '<?php echo json_encode($php_data); ?>'; var js_obj_data = JSON.parse(js_data ); </script> 

$ php_data может быть от простых массивов до массивов объектов.

Вы будете использовать JSON для кодирования объектов PHP, чтобы они могли получить доступ к Javascript. Специфика того, как это сделать, зависит от вашего приложения.

Для этой цели PHP имеет функции json_encode и json_decode.