Php 如何在javascript中输出JSON?

Php 如何在javascript中输出JSON?,php,jquery,json,Php,Jquery,Json,我正在尝试将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.0

我正在尝试将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未捕获的语法错误: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>

简单地图
$.ajax({
键入:“获取”,
数据类型:“JSON”,
网址:“dab.php”,
数据:{
sataVariable:“这是一些使用GET方法发送的数据”
},
成功:功能(数据){
var j=JSON.parse(数据);
document.writeln(data);//尝试获取坐标并将其存储在变量中
},
错误:函数(数据){
控制台日志(数据);
}
});

因为您正在将
数据类型:“JSON”
输入到对从AJAX调用中检索到的数据的调用中,因此会自动从JSON解析为JavaScript对象(尽管我会将
“JSON”
切换为
“JSON”
,以匹配文档):

“json”
:将响应评估为json并返回JavaScript对象

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

现在,在名为
data
的JavaScript对象中有了数据,您可以与它进行交互,例如

for (var i = 0; i < data.points.length; i++) {
    console.log(data.points[i].lat, data.points[i].long);
}
for(变量i=0;i
因为您正在将
数据类型:“JSON”
输入到对从AJAX调用中检索到的数据的调用中,因此会自动从JSON解析为JavaScript对象(尽管我会将
“JSON”
切换为
“JSON”
,以匹配文档):

“json”
:将响应评估为json并返回JavaScript对象

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

现在,在名为
data
的JavaScript对象中有了数据,您可以与它进行交互,例如

for (var i = 0; i < data.points.length; i++) {
    console.log(data.points[i].lat, data.points[i].long);
}
for(变量i=0;i
如果将PHP脚本的content-type头设置为:
header('content-type:application/json'),会发生什么情况?(在php脚本的顶部)嘿,伙计,我仍然得到了未捕获的错误如果你检查你的网络选项卡并看到请求返回的实际响应,你会得到什么?在网络选项卡中,我看到json,即点:[{lat…lng..}]。你能检查`var j=json.parse(data);`并确保它不是
Object
如果它是您不需要执行
JSON.parse(data)
的对象,那么如果您将PHP脚本的内容类型头设置为:
header('content-type:application/JSON'),会发生什么?(在php脚本的顶部)嘿,伙计,我仍然得到了未捕获的错误如果你检查你的网络选项卡并看到请求返回的实际响应,你会得到什么?在网络选项卡中,我看到json,即点:[{lat…lng..}]。你能检查`var j=json.parse(data);`确保它不是
Object
如果它是您不需要执行的对象
JSON.parse(data)
hey mate,谢谢您的回答。我按照你的指示,我试着打印数据。writeln(data)希望我至少能看到json,但我在页面上作为输出得到的只是[object]。有什么提示/建议吗?你是如何“输出”结果的?试试console.log(data)”,看看您在浏览器控制台中得到了什么。听起来你可能需要学习如何使用JavaScript对象…@ThomasC,这意味着你有一个JavaScript对象。您对此数据的实际最终目标是什么?如果您真的想将其转储到浏览器中,我会感到惊讶。@Chris最终我想在地图上绘制这些lat/lng。如果我在屏幕上免费打印所有这些点,那就太过分了@ThomasC,您已经将数据放入JavaScript对象中。现在你可以开始使用它了。我在回答中添加了一个示例,该示例应将所有
lat
long
值打印到浏览器控制台。例如,你可以把它放在你的
成功
处理程序中。嘿,伙计,谢谢你的回答。我按照你的指示,我试着打印数据。writeln(data)希望我至少能看到json,但我在页面上作为输出得到的只是[object]。有什么提示/建议吗?你是如何“输出”结果的?试试console.log(data)”,看看您在浏览器控制台中得到了什么。听起来你可能需要学习如何使用JavaScript对象…@ThomasC,这意味着你有一个JavaScript对象。您对此数据的实际最终目标是什么?如果您真的想将其转储到浏览器中,我会感到惊讶。@Chris最终我想在地图上绘制这些lat/lng。如果我在屏幕上免费打印所有这些点,那就太过分了@ThomasC,您已经将数据放入JavaScript对象中。现在你可以开始使用它了。我在回答中添加了一个示例,该示例应将所有
lat
long
值打印到浏览器控制台。例如,您可以将其放入
success
处理程序中。