Помогите пожалуйста понять почему такой скрипт выводит результат в консоль:
function getData() {
$.get( "http://api.vk.com/method/database.getCountries?v=5.5", function( data ) {
var resp = JSON.stringify(data['response']['items']);
console.log( JSON.parse(resp) );
});
};
getData();
, а такой скрипт нет:
function getData() {
$.get( "http://api.vk.com/method/database.getCountries?v=5.5", function( data ) {
var resp = JSON.parse(data['response']['items']);
console.log( resp );
});
};
getData();
Текст ошибки в консоли:
Uncaught SyntaxError: Unexpected token o in JSON at position 1 at JSON.parse ()
Параметр data, который вы получаете в случае успешного выполнения запроса, уже содержит корректный объект. Это не строка, ее не надо парсить дополнительно.
Ответ на запрос, как вы можете увидеть в инструментах разработчика, приходит с установленными заголовками
content-type application/json; charset=utf-8
и этого достаточно что бы jquery автоматически определила тип контента и применила к нему JSON.parse прежде чем эти данные поступили в ваш обработчик.
Поэтому повторный вызов излишен, и приводит, как видите к ошибке. Объект с помощью toString() приводится в строковый вид, получая сроку [object Object], отсюда и o в позиции 1.
Как развивать веб-проекты в 2026 году: технологии, контент E-E-A-T и факторы доверия
Современные инструменты для криптотрейдинга: как технологии помогают принимать решения
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники