繁体   English   中英

如何在JavaScript中输出JSON?

[英]How to ouput JSON in javascript?

我正在尝试从php查询将json对象的结果打印到javascript中。
因此,基本上查询结果如下所示:

{"points":
[{"lat":40.766696929932,"long":-73.990615844727},  
{"lat":40.688514709473,"long":-73.96475982666},
{"lat":40.714504241943,"long":-74.005630493164},  
{"lat":40.704719543457,"long":-74.009262084961},    
{"lat":40.693260192871,"long":-73.968894958496},     
{"lat":40.760955810547,"long":-73.967247009277},

]}

当我尝试获取包含json对象的php变量(使用AJAX)时,我得到:
VM62:1未捕获的SyntaxError:JSON中位置1处的意外令牌o
我尝试谷歌搜索以查看错误与我的代码的关系,但是我仍然不明白。
有人可以向我解释如何在JavaScript中获取json吗?

<?php
$connect = pg_connect("host=127.0.0.1 dbname=datab user=thomas password=iamtom") or die("Could not connect: ");
$result = pg_query($connect,"SELECT geometry FROM table");
if (!$result){
    echo '{"error":"no results"}';
}

$points= array();    
while($row = pg_fetch_array($result)){ 
    $coordinate = json_decode($row['geometry'])->coordinates;
    $p = new stdClass;
    $p->lat = $c_2[0];
    $p->long = $c_1[1]; 
    array_push($points, $p);
}
$output = new stdClass;
$output->points = $points;
echo json_encode($output);
pg_close($connect);
?>

这是我的HTML / JS:

<html>
<head>
<title>Simple Map</title>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script>

<script>
$.ajax({
    type: "GET",
    dataType: "JSON",
    url: "dab.php",
    data: {
        sataVariable: "here is some data send with GET method"
    },
    success: function(data) {
        var j = JSON.parse(data);
        document.writeln(data);   // attempting to take the coordinates and store it in a variable
    },
    error: function(data) {
        console.log(data);
    }
});
</script>
</head>
<body>

</body>
</html>

因为您要在对jQuery.ajax()的调用中提供dataType: "JSON"所以将从AJAX调用中检索到的数据自动从JSON解析为JavaScript对象(尽管我将"JSON"切换为"json"匹配文档):

"json" :将响应评估为JSON并返回一个JavaScript对象。

不要在成功处理程序中使用JSON.parse()再次手动解析响应; 只是直接处理data

现在,您已经将数据包含在名为data的JavaScript对象中,可以与之交互,例如

for (var i = 0; i < data.points.length; i++) {
    console.log(data.points[i].lat, data.points[i].long);
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM