我使用以下PHP代码从Web服务器中提取JSON数据
$result = mysql_query("select lat,lng from gpsdata limit 10");
$rows = array();
while($r = mysql_fetch_assoc($result)) {
$rows[] = $r;
}
print json_encode($rows);
我正在使用Javascript来获取此数据
$.getJSON('returngps.php').done(function(data) {
for (var i=0;i< data.length;i++ ){
console.log(data[i]);
}
}
我的问题是我收到的数据。我目前得到的输出是:
{lat: "53.399793333333", lng: "-6.3844516666667"}
我想要合作的是:
{lat: 53.399793333333, lng: -6.3844516666667}
有没有办法转换它?
答案 0 :(得分:2)
问题是从MySQL到PHP的数字检索导致它们被转换为字符串。 (我讨厌PHP和MySQL之间的关系不尊重类型!)然后,JSON序列化适当地维护字符串类型。
因此,您需要在检索时将值转换为浮点数。这将导致JSON序列化将值视为数字而不是字符串,并且在接收JS中不需要任何荒谬的字符串操作或关于数据类型的假设。
$result = mysql_query("select lat,lng from gpsdata limit 10");
$rows = array();
while($r = mysql_fetch_assoc($result)) {
$r['lat'] = (float) $r['lat'];
$r['lon'] = (float) $r['lon'];
$rows[] = $r;
}
答案 1 :(得分:1)
尝试使用parseFloat:
data[i].lat = parseFloat(data[i].lat);
data[i].lng = parseFloat(data[i].lng);