LINUX.ORG.RU

JSON в JavaScript - не могу понять как взять значение без eval() ?


0

1

Проблема в следующем.

Имеется JSON-объект, полученный с сервера. Команда:

alert("Get data from server: "+JSON.stringify(response));

Показывает следующее:

Get data from server: [{"parameter1":"15","parameter2":"1"}]

Вопрос. Как получить отдельно значения первого и второго параметра?

Пробовал так:

alert("Parameter 1: "+response[0].parameter1);

И так:

alert("Parameter 1: "+response[0].['parameter1']);

Оба варианта выдают undefined.

★★★★★

Последнее исправление: Xintrea (всего исправлений: 1)

alert("Parameter 1: "+response[0].parameter1);

Странно, что не работает.

alert("Parameter 1: "+response[0].['parameter1']);

А это вообще неправильно. Надо так:

alert("Parameter 1: "+response[0]['parameter1']);

KennyMinigun ★★★★★
()

Должно работать. Опечаток нет?

Deleted
()

[telepathy-mode]
Вероятно у Вас JSON не декодированный(строка). Вам нужно сделать

response = JSON.parse(response); // не работает в ИЕ9
[/telepathy-mode]

KennyMinigun ★★★★★
()
Последнее исправление: KennyMinigun (всего исправлений: 2)
Ответ на: комментарий от KennyMinigun

А это вообще неправильно. Надо так:
alert(«Parameter 1: »+response[0]['parameter1']);

Опечатался пока экспериментировал.

Так тоже undefined.

Xintrea ★★★★★
() автор топика
Ответ на: комментарий от KennyMinigun

Вероятно у Вас JSON не декодированный(строка)

Я же показываю что выводит JSON.stringify

Вам нужно сделать
response = JSON.parse(response); // не работает в ИЕ9

Это печально. А как делать чтоб и в IE8-10 работало?

Xintrea ★★★★★
() автор топика
Ответ на: комментарий от Xintrea

Это печально. А как делать чтоб и в IE8-10 работало?

Использовать стороннюю библиотеку, например jQuery.decodeJSON или быть рисковым пацаном и использовать eval.

KennyMinigun ★★★★★
()
Ответ на: комментарий от Xintrea

Я же показываю что выводит JSON.stringify

Вот Вам кусок кода, который обьясняет что к чему.

var response = '[{"parameter1":"15","parameter2":"1"}]';

var stringified = JSON.stringify(response); // как было строкой так и осталось
var parsed = JSON.parse(response); // теперь это JS обьект

console.log("stringified: " + stringified + " [" + typeof stringified + "]");
console.log("parsed: " + parsed + " [" + typeof parsed + "]");

KennyMinigun ★★★★★
()
Последнее исправление: KennyMinigun (всего исправлений: 1)

response откуда берётся? Видимо там строка а не объект.

Kalashnikov ★★★
()

может уже нра jsfiddle выложите так проще будет гадать

zarkone ★★
()

используй JSON.stringify и JSON.parse, для кроссбраузерности установи json2 библиотеку (стандарт в индустрее, между прочим).

wwwsevolod
()
Ответ на: комментарий от special-k

И ничего с других серверов не встраивать, ага. Скажи нет социалкам, встраиванию видео и рекламе! А что, неплохо даже.

anonymous
()
Ответ на: комментарий от special-k

Eval будет реагировать не на запрос, а на ответ. Ты точно уверен, что тебе ответил именно тот, кого ты спросил? Ты абсолютно уверен, что в ответе нет никаких «особенностей»?

Xellos ★★★★★
()
Ответ на: комментарий от special-k

Занятно. У них parse самый тормозной по статистике, а в моих браузерах наоборот самый шустрый.

Xellos ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.