当chrome控制台完全解析JSON时,Javascript无法解析JSON

当chrome控制台完全解析JSON时,Javascript无法解析JSON,javascript,php,json,laravel,Javascript,Php,Json,Laravel,当我试图从数据库中返回一些坐标以生成多边形时,我遇到了一点困难 我首先使用Laravel Framework从数据库中获取数据: 地图控制器- public function getallmapcoords(request $request) { $pd = ParishData::limit(10)->get(); return json_encode($pd); } 然后我解析所有数据,并将其缩小到我想要的坐标 阿贾克斯- $.ajax({ type: 'post

当我试图从数据库中返回一些坐标以生成多边形时,我遇到了一点困难

我首先使用Laravel Framework从数据库中获取数据:

地图控制器-

public function getallmapcoords(request $request)
{
    $pd = ParishData::limit(10)->get();
    return json_encode($pd);
}
然后我解析所有数据,并将其缩小到我想要的坐标

阿贾克斯-

  $.ajax({
type: 'post',
url: '{{route("getallmapcoords")}}',
beforeSend:function(){
$('.loader').append('<div id="progress"><img src="{{asset("img/wheel.gif")}}"><br><span class="loadertext">Loading...</span></div>');
  $('#progress').center(); //call the center function, centres the progress div in the
},
success:function(data){
  $('.loader').empty();

  parsedData = JSON.parse(data);
  coords = parsedData[0]['coordinates'];
  console.log(coords);
  parsedcoords = JSON.parse(coords);
  console.log(parsedcoords);

},
error:function(){
  // failed request; give feedback to user
},
complete:function(data){
  $('.loader').empty();
}
});
$.ajax({
键入:“post”,
url:{{route(“getallmapcoords”)}},
beforeSend:function(){
$('.loader').append('
加载…'); $('#progress').center();//调用center函数,将progress div置于 }, 成功:功能(数据){ $('.loader').empty(); parsedData=JSON.parse(数据); coords=parsedData[0]['coordinates']; 控制台日志(coords); parsedcoods=JSON.parse(coords); console.log(解析词); }, 错误:函数(){ //请求失败;向用户提供反馈 }, 完成:功能(数据){ $('.loader').empty(); } });
第一个console.log以字符串形式显示坐标,如图所示:

第二个console.log生成以下错误:

Uncaught SyntaxError: Unexpected token l in JSON at position 4
at JSON.parse (<anonymous>)
at Object.success (<anonymous>:170:27)
at fire (eval at <anonymous> (app.js:83), <anonymous>:3268:31)
at Object.fireWith [as resolveWith] (eval at <anonymous> (app.js:83), <anonymous>:3398:7)
at done (eval at <anonymous> (app.js:83), <anonymous>:9305:14)
at XMLHttpRequest.eval (eval at <anonymous> (app.js:83), <anonymous>:9548:9)
Uncaught SyntaxError:JSON中位置4处的意外标记l
在JSON.parse(

让我困惑的是,为什么谷歌浏览器解析得很好,但JSON.Parse却失败了

我返回的字符串示例如下:


感谢您提供的任何帮助,如果在PHP方面也有更好的方法,我洗耳恭听!

您正在两次解析对象:

parsedData = JSON.parse(data);
coords = parsedData[0]['coordinates'];
console.log(coords);
parsedcoords = JSON.parse(coords);
console.log(parsedcoords);
应该是:

parsedData = JSON.parse(data);
coords = parsedData[0]['coordinates'];
console.log(coords);

“first console.log将坐标显示为字符串,如图所示”不,它显示的是数组,而不是字符串。无需再次解析它。您已经这样做了。(您不必自己解析它一次,更不用说两次了;如果PHP响应正确地将
应用程序/json
作为内容类型发送,或者您包含
数据类型:“json”
ajax
调用中,jQuery将为您解析它。)坐标数据以字符串形式存储在第一个json中。然后我使用coords=parsedData[0]['coordinates'访问坐标;其中有一个字符串类型,然后我再次解析它以将该字符串转换为JSON。显示在网络层返回的实际JSON文本。我怀疑您会发现坐标没有隐藏在双重编码字符串中。如果是,这就是您应该解决的问题;将JSON编码为JSON没有任何意义。我不确定是否遵循?一次第一次以这种格式解析初始字符串:这只是对象格式的数据库数据。坐标作为字符串存储在第一个对象中,因此我需要第二次解析,以将数据转换为对象格式。