我加载了一个php / json文件。这是我的json文件:
echo '{';
echo '"position":[';
while($inhoud = mysql_fetch_array($result))
{
echo '{';
echo '"lat":"'.$inhoud['lat'].'",';
echo '"long":"'.$inhoud['long'].'",';
echo '}';
}
echo ']}';
这很有效。我想在我的javascript中加载它,并按照这样做:
$.getJSON('req/position.php', function(data) {
$.each(data, function(key, val) {
newLatLng = key;
});
});
但这不起作用。它加载文件,但我没有得到这些数据。我该怎么办?
谢谢,
答案 0 :(得分:5)
我认为你在JSON输出中有一些语法错误。
"long"
数据时,最后会添加逗号,
,但不应该,因为"long"
是对象的最后一个键。while
周期内打印出一个对象。这些对象是数组的一部分。因此,除了最后一个,您必须在结束,
后附加逗号}
。而且,如果我可以问,为什么你没有使用 json_encode()
PHP函数,而不是手动构建所有JSON字符串 ?有了它,您可以将所有数据构建为普通的PHP数组,然后使用JSON对其进行编码(转换)。你会避免所有这些烦人的语法东西。
试一试:
$data = array();
$data['position'] = array();
while($inhoud = mysql_fetch_array($result))
{
$data['position'][] = array(
"lat" => $inhoud['lat'],
"long" => $inhoud['long']
);
}
echo json_encode($data);
答案 1 :(得分:1)
您在名为position
的数组中定义了坐标。你需要迭代它。 Array包含具有属性lat
和long
的对象。如果您想使用这些值,您应该尝试类似:
$.getJSON('req/position.php'), function(data){
$.each(data.position, function(index, value){
var newLatLng = { latitude: value.lat, longitude: value.long };
});
});
答案 2 :(得分:1)
在PHP脚本中返回正确的标头
header('Content-type: application/json');
它应该工作。
还可以使用json_encode
将PHP值编码为有效的JSON。
答案 3 :(得分:1)
通过字符串构建php中的JSON,但是很原始。开始构造一个数组并使用json_encode()。
$arr = array();
while($inhoud = mysql_fetch_array($result)){
$temp = array();
$temp['lat'] = $inhoud['lat'];
$temp['long'] = $inhoud['long'];
$arr[] = $temp;
}
echo json_encode($arr);
如果您在mysql查询中选择的所有内容都是'lat'和'long',那么您也可以将$inhoud
放入while循环中的$arr
,就像这样。
while($inhoud = mysql_fetch_array($result)){
$arr[] = $inhoud;
}
如果这样做,请确保只选择要在JSON中输出的mysql查询中的列。
答案 4 :(得分:0)
$.getJSON('req/position.php', function(data) {
var obj = JSON.parse(data);
// At this point, obj is an object with your JSON data.
});
来源:MDN