SyntaxError: JSON.parse: неожиданный символ в строке 1 столбца 2 данных JSON – FireBug сообщает об этой ошибке. Любое решение?

Я использовал Laravel Response :: json для генерации ответа JSON.

return Response::json(array('subjects' => $subjects, 'year' => $year, 'sem' => $sem)); 

Когда я запускаю запрос, я получаю действительный JSON (проверенный в JSONLint) в качестве ответа.

Но следующий метод jQuery не работает: $.parseJSON(data)

Я получаю следующую ошибку в FireBug:

SyntaxError: JSON.parse: неожиданный символ в строке 1 столбца 2 данных JSON

Ответ, который я получаю:

 { "subjects": [ { "id": 1, "name": "Control Systems", "semester": 1, "year": 3, "branch_id": 4 }, { "id": 2, "name": "Analog Communications", "semester": 1, "year": 3, "branch_id": 4 }, { "id": 3, "name": "Linear IC Applications", "semester": 1, "year": 3, "branch_id": 4 }, { "id": 4, "name": "Antennas & Wave Propagation", "semester": 1, "year": 3, "branch_id": 4 } ], "year": 3, "sem": 2 } 

И код, где я пытаюсь его разобрать:

 $(document).ready(function() { $('#branchAndSubjects').click(function() { $.post('/findBranchAndSubjects', { roll: roll, _token: "{{csrf_token()}}" }, function(data) { var subjects = $.parseJSON(data); }); }); }); 

Если вы делаете $.parseJSON(data) в обработчике успеха ajax. Поскольку вы выполняете $.parseJSON(data) в обработчике успеха ajax, проблема почти наверняка заключается в том, что jQuery уже проанализировал его для вас. jQuery будет рассматривать Content-Type ответа, и если это application/json , оно проанализирует его и предоставит обработанный результат вашему обработчику. Первое, что произойдет, если вы передадите это значение в $.parseJSON будет заключаться в том, что он будет преобразован обратно в строку ( "[object Object]" , в вашем случае), который $.parseJSON будет отсутствовать $.parseJSON .

Просто используйте data как есть, это уже объект, благодаря автоматическому разбору:

 $(document).ready(function() { $('#branchAndSubjects').click(function() { $.post('/findBranchAndSubjects', { roll: roll, _token: "{{csrf_token()}}" }, function(data) { console.log(data.year); // 3 console.log(data.subjects.length); // 4 console.log(data.subjects[0].name); // Control Systems }); }); });