javascript - 有没有办法用 stdClass 从 php 到 javascript 响应匿名函数

标签 javascript php json stdclass

下面是我的代码

$obj = new stdClass();
$obj->xAxis = new stdClass();
$obj->xAxis->allowDecimals = false;
$obj->xAxis->labels = new stdClass();
$obj->xAxis->labels->formatter = function() { return this.value; };

return $obj;

我想在 ajax 中响应为 json,如下所示

xAxis: {
    allowDecimals: false,
    labels: {
        formatter: function () {
            return this.value;
        }
    }
}

最佳答案

没有。没有办法在 Javascript 中传递该函数,因为不仅 PHP 在服务器端运行,Javascript 将在客户端运行,而且当您获取该对象时,该函数将被解析为函数对象 $obj.

var_dump($obj) 的输出是

object(stdClass)#1 (1) { ["xAxis"]=> object(stdClass)#2 (2) { ["allowDecimals"]=> bool(false) ["labels"]=> object(stdClass)#3 (1) { ["formatter"]=> object(Closure)#4 (0) { } } } }

您可以看到该函数被解析为一个对象,您可能获得的最终输出根本没有该函数。不过,您将获得其余的参数和值。

{"xAxis":{"allowDecimals":false,"labels":{"formatter":{}}}}

使用 JSON,您可以在 2 种编程语言之间传递键和值,但不能传递函数。因此,只有一种选择是在 Javascript 中创建相关函数并将其用于您想要完成的任务。

如果你想在客户端使用一个函数,看看是否this answer可以提供帮助。

关于javascript - 有没有办法用 stdClass 从 php 到 javascript 响应匿名函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49771505/

相关文章:

javascript - 匹配某种字符串的正则表达式模式

javascript - 如何删除 javascript 或 lodash 中文档数组的子集

PHP 将带撇号的字符串传递给 shell_exec

javascript - 如何在点击事件中附加来自dataTable的数据

json - 克拉克森:希望有个名字,但得到了LEFT_BRACE

javascript - 商店更新后 ExtJS 网格不刷新

javascript - 如何为我嵌入的YouTube播放列表添加Facebook分享按钮

php - 在 cookie 中存储 session 数据

android - 如何使用Retrofit解析动态JSON?

json - 将 json 中的所有 snake_case 键转换为 camelCase 键