2014-06-23 66 views
1

我用下面的PHP行一些SimpleXML的数据转换为数组:PHP/JavaScript的:如何从PHP传递数组的JavaScript

$dataRaw = array(); 
foreach($objCount->escalations as $esc) { 
    $dataRaw[(string)$esc->region] = (int)$esc->volume; 
} 
$dataPrep = json_decode(json_encode($dataRaw), TRUE); 

印刷这将返回看起来确定我下面:

Array ([af] => 6 [as] => 295 [eu] => 249 [na] => 279 [oc] => 42 [sa] => 10) 

然后我试图通过这种使用以下行JS功能,但这不起作用。我没有收到任何错误,图表根本没有显示这一点,可能是因为它无法识别内容。

data: <?php echo $dataPrep;?> 

当我硬编码的“数据”,在JS值那么随后的一切工作正常,所以我大概经过是错误的。

var data = [{ 'hc-key': 'af', value: 6 }, 
    { 'hc-key': 'as', value: 295 }, 
    { 'hc-key': 'eu', value: 249 }, 
    { 'hc-key': 'na', value: 279 }, 
    { 'hc-key': 'oc', value: 42 }, 
    { 'hc-key': 'sa', value: 10 }]; 

有人能告诉我我在这里需要改变吗?

很多感谢,蒂姆。

+1

尝试json编码在php – Rajasekhar

回答

2

试试这个来得到想要的结构:

foreach($objCount->escalations as $esc) { 
    $dataRaw[] = array('hc-key' => (string) $esc->region, 'value' => (int) $esc->volume); 
} 

data: <?php echo json_encode($dataRaw); ?> 
+0

非常感谢!事实证明,这在我的情况下效果更好(可能是因为关键部分),所以我会去那个。我会尽快接受。 – user2571510

4

您需要传递编码数据,而不是在解码之后。作为解码后,它变成阵列和直接我们不能分配数组js的变量:

foreach($objCount->escalations as $esc) { 
    $dataRaw[(string)$esc->region] = (int)$esc->volume; 
} 
$dataPrep = json_encode($dataRaw); 

和JS变量:

data: <?php echo $dataPrep;?> 
+0

非常感谢您的快速回复!这很好 - 我会尽快接受。 :) – user2571510

+0

事实证明,Danijel的下面的回应在我的情况下效果更好(可能是因为hc关键部分),所以我会去那个。非常感谢您为我带来正确的赛道! – user2571510

1

当您对数据进行json_encode编码时,必须在再次创建数组之前将其解析为JavaScript中的json。使用例如:http://api.jquery.com/jquery.parsejson/

但在你的情况,你已经通过调用json_decode将它转换回php数组。你不能回显一个php数组,并期望它显示在像JavaScript数组的源代码中。

+0

不可以,因为其他答案已经完成,所以在这种情况下无需使用JavaScript的JSON.parse。 – James

+0

@詹姆斯,我指的是这一行: '$ dataPrep = json_decode(json_encode($ dataRaw),TRUE);' 在这里,$ dataPrep将再次成为一个php数组。 'echo $ dataPrep'只会产生'Array'作为输出 – marty

相关问题