PHP/JavaScript:如何将数组从PHP传递到JavaScript

PHP / JavaScript: how to pass array from PHP to JavaScript

本文关键字:PHP JavaScript 数组      更新时间:2023-09-26

我使用以下PHP行将一些简单的XML数据转换为数组:

$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中对"data"值进行如下硬编码时,一切都很好,所以我可能传递错了

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 }];

有人能告诉我这里需要换什么吗?

非常感谢,蒂姆。

你需要传递编码后的数据,而不是解码后。因为解码后,它会变成数组,我们不能直接将数组分配给js变量:

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

对于js变量:

data: <?php echo $dataPrep;?>
data: <?php echo json_encode($dataPrep); ?>

PHP手册:json_encode()--http://www.php.net/manual/en/function.json-encode.php

尝试此操作以获得所需的结构:

foreach($objCount->escalations as $esc) {
    $dataRaw[] = array( 'hc-key' => (string) $esc->region, 'value' => (int) $esc->volume );
}
data: <?php echo json_encode( $dataRaw ); ?>

当您对数据进行json_encode时,您必须将其解析为javascript中的json,然后才能再次获得数组。例如:http://api.jquery.com/jquery.parsejson/

但是,在您的情况下,您已经通过调用json_decode将其转换回php数组。您不能回显php数组并期望它像javascript数组一样显示在源代码中。