(对不起,我之前发过一个非常类似的问题,但看起来我的原始问题有点偏离)
这是我的代码:
$.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收到了一些我希望在jQuery地图data
上显示的#vmap
。我创建了一些与地图配合得很好的test_data
,但我似乎无法使data
采用与test_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);
谢谢!
修改
以下是console-log的屏幕截图。我不确定如何准确地阅读它。
答案 0 :(得分: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中是非常标准和常见的)。试试我的建议。
答案 1 :(得分: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方面解决它。我留下了答案,因为它可能会增加一些价值。
答案 2 :(得分:0)
在PHP页面中的行
$country_array[] = array($row[4], $row[2]);
应该是
$country_array[] = array($row[4] => $row[2]);
这将使您的PHP数组关联,将json_encoded转换为Javascript对象,而不是您当前看到的Javascript数组。