将 PHP 生成的 JS 对象传递给 JS

Pass PHP generated JS objects to JS

本文关键字:JS 对象 PHP      更新时间:2023-09-26

>我在PHP中生成一些JS对象字符串,因为我需要的所有变量都在那里,而不是将它们传递给js并在那里生成对象:

$results[] = "{value:" . $data . ",color:'"rgba($aa,$ab,$ac," . Config::$TRANSPARENCY_B . ")'",highlight:'"rgba($ba,$bb,$bc," . Config::$TRANSPARENCY_B . ")'",label:'"" . $entry->getDate() . "'"}";

现在我想将JS对象字符串的完成结果列表传递给JS以显示它。生成的结构应如下所示:[{object1}, {object2}, ...]

为了实现这一目标,我使用htmlspecialchars(json_encode($result), ENT_QUOTES, "UTF-8")

然而,这最终会出现在结构中:{"{object1}", "{object2}", ...],这当然是行不通的。我怎样才能扔掉无用的封闭"?我浏览了json_encode()htmlspecialchars()但那里的参数似乎都不适合。

有什么想法吗?谢谢!

编辑:事实证明我完全愚蠢。当然,我应该打包一些真正的物品,而不是代表它们的字符串。谢谢!

为什么不直接创建真实的对象,这样将它们编码为 JSON 就很容易了

$obj = new stdClass;
$obj->value = $data;
$obj->label = $entry->getDate();
$results[] = $obj;
echo json_encode($results);

关联数组也将在 JSON 中输出为"对象",并且可能更容易

你最好不要手动用字符串制作JSON,而是使用json_encode函数为你做这件事:

$results[] = array(
  'value' => $data,
  'color' => "rgba($aa,$ab,$ac," . Config::$TRANSPARENCY_B . ")",
  'highlight' => "rgba($ba,$bb,$bc," . Config::$TRANSPARENCY_B . ")",
  'label' => $entry->getData()
);
echo json_encode($results);