如何将数据库查询打印到javascript数组?

时间:2014-07-26 13:30:36

标签: javascript php arrays database drupal-7

我想在jvector map中显示一些信息,并使用以下代码从数据库中获取信息:

$query = db_select('location', 'l')
    ->condition('l.lid', 0, '<>')
    ->fields('l', array('country'))
    ->range(0, 50);

$result = $query->execute();
$arr = [];

while($record = $result->fetchAssoc()) {
      $arr[] = $record;       
}
print_r($arr);

对于我在Drupal 7中使用位置模块的字段,我得到这些数组:

Array ( 
    [0] => Array ( 
        [country] => de 
    ) 
    [1] => Array ( 
        [country] => de 
    ) 
    [2] => Array ( 
        [country] => fr 
    ) 
)

但是,我如何能够获取这些信息,统计这些国家并将其显示为javascript显示,例如:var gdpData = { "de": 2, "Fr": 1, ... };用于jvector地图?

2 个答案:

答案 0 :(得分:2)

json_encode - 返回值

的JSON表示
json_encode($arr);

样本:

while($record = $result->fetchAssoc()) {
    if (isset($arr[$record["country"]])) {
        $arr[$record["country"]]++;
    } else {
        $arr[$record["country"]] = 0;
    }
}

json_encode($arr);

在javascript中:

JSON.parse(data);
console.log(data.de); //2

答案 1 :(得分:1)

您可以使用Drupal 7的包装函数drupal_json_encode

或者,您可以将PHP $arr变量传递给drupal_add_js(array('locations' => $arr), 'setting');并在javascript中按如下方式访问:

var gdpData = Drupal.settings.locations;