parse json in javascript


parse json in javascript

我加载了一个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;
});
});

但这行不通。它加载了文件,但我没有得到这些数据。我该怎么办?

谢谢,

我认为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);

您在名为position的数组中定义了坐标。您需要对此进行迭代。Array包含属性为latlong的对象。如果你想使用这些值,你应该尝试以下方法:

$.getJSON('req/position.php'), function(data){
    $.each(data.position, function(index, value){
        var newLatLng = { latitude: value.lat, longitude: value.long };
    });
});

在PHP脚本中返回正确的头header('Content-type: application/json');它应该起作用。

还可以使用json_encode将PHP值编码为有效的JSON。

通过字符串在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"answers"long",那么您也可以像这样将$inhoud放入while循环中的$arr

while($inhoud = mysql_fetch_array($result)){      
  $arr[] = $inhoud;
}

如果这样做,只需确保只选择mysql查询中希望以JSON输出的列。

$.getJSON('req/position.php', function(data) {
   var obj = JSON.parse(data);
   // At this point, obj is an object with your JSON data.
});

来源:MDN