当chrome控制台完全解析JSON时,Javascript无法解析JSON
当我试图从数据库中返回一些坐标以生成多边形时,我遇到了一点困难 我首先使用Laravel Framework从数据库中获取数据: 地图控制器-当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
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没有任何意义。我不确定是否遵循?一次第一次以这种格式解析初始字符串:这只是对象格式的数据库数据。坐标作为字符串存储在第一个对象中,因此我需要第二次解析,以将数据转换为对象格式。