Подтвердить что ты не робот

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

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

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

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

4b9b3361

Ответ 1

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

  • Преобразовать объект PHP в массив.

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

  • Pass JSON-кодированные данные в PHP

  • Декодирование JSON с помощью JavaScript с помощью JSON.parse или вы можете использовать jQuery.parseJSON, чтобы сделать это.

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

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

Ответ 2

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

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

При попытке использовать json_encode для объекта будет вызываться jsonSerialize. Вы можете представить этот интерфейс как своего рода "магический метод", специфичный для собственной функции кодирования 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

Documentation

Ответ 3

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

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

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

Ответ 4

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

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