Вход

Просмотр полной версии : Простейший JSON


NeVirus
21.02.2013, 13:11
Добрый день, гуру JavaScript!

Потихоньку осваиваю JavaScript и сейчас ломаю голову над JSON...

Есть небольшой фаилик 'base.json'
{
"goods" :
{
"id" : 1,
"type" : "Mouse",
"title" : "Flagman 110",
"manufacturer" : "Defender",
"description" : "Мышь Defender Flagman 110, USB, Черный",
"price" : 649,
"in_stock" : 0
},
{
"id" : 2,
"type" : "Mouse",
"title" : "Orion 300",
"manufacturer" : "Defender",
"description" : "Мышь Defender Orion 300, USB, Черный",
"price" : 649,
"in_stock" : 0
}
}

Из него я хочу вытащить инфу вот таким образом:
$('#b4').click(function(){
$.ajax({
url: 'js/base.json',
dataType: 'json',
success: function(data) {
alert(data.goods[1].id);
}
})
});

Толку - ноль, хотя я в упор не вижу отличия от примеров гуляющих по интернету (они кстати как на зло почти 100% слизаны с офф сайта jQuery и не отличаются друг от друга ничем ).

kobezzza
21.02.2013, 13:26
{
"goods": [{
"id": 1,
"type": "Mouse",
"title": "Flagman 110",
"manufacturer": "Defender",
"description": "Мышь Defender Flagman 110, USB, Черный",
"price": 649,
"in_stock": 0
}, {
"id": 2,
"type": "Mouse",
"title": "Orion 300",
"manufacturer": "Defender",
"description": "Мышь Defender Orion 300, USB, Черный",
"price": 649,
"in_stock": 0
}]
}


Ты забыл знак массива после "goods" : .
http://jsonlint.com/

NeVirus
21.02.2013, 13:36
@kobezzza:
Спасибо, и за ссыль тоже. Прогнал код через валидатор - пишет все ОК.
Но результат все равно тот же самый...

К слову драгонфлай Оперы и Встроенный валидатор Дримвивера ругаются на 2 строчку якобы там должен быть знак ";" вместо ":"... хотя это явно не верно и проблемы не решает в любом случае.

NeVirus
21.02.2013, 14:39
Ёперный театр... проблему решил... поднял денвер и сунул туда исходники - все работает.

keen
21.02.2013, 14:58
ого, денвер :)

kobezzza
21.02.2013, 18:03
К слову драгонфлай Оперы и Встроенный валидатор Дримвивера ругаются на 2 строчку якобы там должен быть знак ";" вместо ":"... хотя это явно не верно и проблемы не решает в любом случае.

JSON - это строка, а ты вставляешь как литерал объекта JS, но в данном случае парсер думает, что это метка, вот и ругается (это очень частный случай, но решить его можно просто взяв всё выражение в скобки).

PS: вот парсинг JSON в JS
JSON.parse('{"a": "test!"}');