下面是我的代码
$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/