Javascript не может выполнить синтаксический анализ JSON, когда консоль Chrome выполняет синтаксический анализ - PullRequest
0 голосов
/ 30 апреля 2018

Я немного застрял, когда пытался вернуть некоторые координаты из базы данных для API карт Google, чтобы получить многоугольник.

Сначала я получаю свои данные из базы данных, используя Laravel Framework:

MapController -

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();
}
});

Первый файл 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)

После копирования первого console.log (строковая версия) в консоль Google Chrome и присвоения переменной, он возвращает объект в нужном мне формате.

Меня смущает то, что Google Chrome анализирует его нормально, но JSON.Parse не работает?

Пример строки, которую я возвращаю:

https://pastebin.com/c9rq9HqE

Спасибо за любую помощь, которую вы можете оказать, и, если есть и лучший способ сделать это на стороне PHP, я весь в ушах!

1 Ответ

0 голосов
/ 30 апреля 2018

Вы анализируете объект дважды:

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);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...