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

时间:2016-02-19 18:54:23

标签: javascript php

我在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(),但似乎没有任何参数适合。

有什么想法吗?谢谢!

编辑:事实证明我完全是愚蠢的。当然我应该收拾一些真正的objets而不是代表它们的字符串..谢谢!

2 个答案:

答案 0 :(得分:2)

为什么不创建真实对象,这样就可以将它们编码为JSON很简单

$obj = new stdClass;
$obj->value = $data;
$obj->label = $entry->getDate();

$results[] = $obj;

echo json_encode($results);

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

答案 1 :(得分:2)

最好不要手动制作字符串中的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);