将PHP对象传递给javascript

时间:2011-06-15 01:14:30

标签: php javascript object

我在php中有对象,每个对象代表一个“项目”以及与之关联的所有信息。

当用户浏览页面时,这些对象应该传递给javascript。理想情况下,镜像相同的结构,所以我可以使用Raphael在我的网站上将每个项目及其信息显示为单独的形状。

但是,如何从php获取对象到javascript?

4 个答案:

答案 0 :(得分:37)

您可以将PHP对象转换为数组,然后使用JSON函数对其进行编码。之后,从JavaScript解码。以下是一些基本步骤:

  1. Convert PHP对象到数组。

  2. 使用json_encode()对该PHP数组进行编码。

  3. Pass JSON编码的数据到PHP

  4. 使用JSON.parse从JavaScript解码JSON,或者您可以使用jQuery.parseJSON来执行此操作。

  5. 这是一篇关于传递JavaScript object to a PHP object的有趣教程。通过观看其他精选/相关视频,您可能会发现它很有用。

    希望这有帮助。

答案 1 :(得分:19)

迟到的答案,但我很惊讶没有人提到可以说是部署此功能的“正确”方式。

在您的对象上实现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

实现对象序列化,这也很方便

<强>文档

答案 2 :(得分:14)

我用这个:

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

$ php_data可以是简单数组到对象数组。

答案 3 :(得分:3)

您将使用JSON对PHP对象进行编码,以便Javascript可以访问它们。有关如何执行此操作的详细信息取决于您的应用程序。

为此目的,PHP具有json_encode和json_decode函数。