-1

(对不起,我之前发布了一个非常相似的问题,但看起来我原来的问题有点偏离)

这是我的代码:

$.ajax({                                      
      url: 'receive-country.php',    //the script to call to get data
      dataType: 'json',                //data format      
      success: function(data)          //on recieve of reply
      {
            var inputArray = data;
            alert(data);
            var test_data = {"af":16.63,"al":11.58,"dz":158.97};
            jQuery('#vmap').vectorMap({
                map: 'world_en',
                backgroundColor: null,
                color: '#ffffff',
                hoverColor: '#eeeeee',
                hoverOpacity: null,
                selectedColor: '#dddddd',
                values: test_data,
                enableZoom: true,
                showTooltip: true,
                scaleColors: ['#C8EEFF', '#006491'],
                normalizeFunction: 'polynomial'
            });
      }
    });

我正在通过 Ajax 接收一些data我想在我的 jQuery 地图上显示的内容#vmap。我创建了一些test_data在地图上效果很好的东西,但我似乎无法获得datatest_data.

我不确定数组格式到底是什么data,但是当我提醒它时,它会显示为:

US,7,US,9,US,10

如何更改格式?


这是发送 JSON 数据的 PHP 页面:

$country_result = mysql_query("SELECT * FROM happiness ORDER BY id ASC");
  $country_array = array();
  while($row = mysql_fetch_array($country_result)) {
    $country_array[] = array($row[4], $row[2]);
  }

  echo json_encode($country_array);

谢谢!

编辑:

这是控制台日志的屏幕截图。我不确定如何准确地阅读它。 在此处输入图像描述

4

3 回答 3

0

我猜你想买key -> value双。因此,在 PHP 中更改行

$country_array[] = array($row[4], $row[2]);

$country_array[$row[4]] = $row[2];

我想,因为您在 PHP 中附加到一个数组,所以您在 JavaScript 中获得的实际数据['US', 7, 'US', 9, 'US', 10]并不['US':7, 'US':9, 'US':10]像您预期​​的那样。

编辑

现在我看到了你的更新。无论如何,您会得到数组数组而不是键值对数组(这在 JavaScript 中非常标准且常见)。按照我的建议试试。

于 2013-03-24T22:16:54.000 回答
0

从 PHP 来看data很可能是一个看起来像这样的二维数组:

[[US,7],[US,9],[US,10]]

您可以通过这种方式将其转换为其他格式:

var newData = {};
for(var i=0; i<data.length; i++){
  newData[data[i][0]] = data[i][1];
}

编辑:正如其他答案所暗示的,要做的事情显然是解决问题的 PHP 方面,而不是在 javascript 方面解决它。我留下我的答案,因为它可能会增加一些价值。

于 2013-03-24T22:17:14.790 回答
0

在您的 PHP 页面中,该行

$country_array[] = array($row[4], $row[2]);

应该

 $country_array[] = array($row[4] => $row[2]);

这将使您的 PHP 数组具有关联性,它将被 json_encoded 编码为 Javascript 对象,而不是您当前看到的 Javascript 数组。

于 2013-03-24T22:19:05.397 回答