将 PHP 对象传递给 javascript

IT技术 php javascript object
2021-02-20 03:57:11

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

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

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

4个回答

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

  1. PHP 对象转换为数组。

  2. 使用json_encode()以编码PHP阵列。

  3. JSON 编码的数据传递给 PHP

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

这是一个关于将JavaScript 对象传递给 PHP 对象的有趣教程通过观看其他一些精选/相关视频,您可能会发现它很有用。

希望这可以帮助。

事实上, eval() 是一个危险的调用方法,而且如果对象很大,它的处理速度会很慢。如果你忽略它的存在会更好,因为在大多数情况下,如果你需要将它用于真正的目的,那是因为你有一个架构问题。
2021-04-17 03:57:11
eval()是邪恶的。除非你无法帮助它,否则不要使用它,尤其不要在不受信任的数据上使用它!
2021-05-04 03:57:11
最佳答案 !奇迹般有效
2021-05-12 03:57:11

迟到的答案,但我很惊讶没有人提到部署此功能的“正确”方法是什么。

在您的对象上实现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 可以是简单的数组到对象数组。

$php_data['foo'] = "'";并且$php_data['foo'] = '"';会给你带来问题。Uncaught SyntaxError: Unexpected string in JSON at position. 为什么不var js_data = <?php echo json_encode($php_data); ?>;跳过 JSON.parse ?
2021-04-24 03:57:11

您将使用 JSON 对 PHP 对象进行编码,以便它们可以被 Javascript 访问。如何做到这一点的细节取决于您的应用程序。

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