#jquery #json
#jquery #json
Вопрос:
Я пытаюсь использовать эти данные через ajax. Вот так:
var $data = $.get('/data.js', function(data){
console.log($(data));
});
В data.js файл, в котором у меня есть этот объект:
var data = {
"testData" : {
"order" : [21,22,33,32,55,20,41],
"categories" : {
"41" : {
"id" : 41,
"title" : "Foo",
"count" : 100,
"href" : "/foo/Foo/"
},
"20" : {
"id" : 20,
"title" : "Bar",
"count" : 100,
"href" : "/foo/Bar/"
}
}
},
"following" : {
"order" : [6,5,4,3,1,0],
"friends" : {
"0" : {
"id" : "0",
"name" : "Friend Name",
"href" : "/test/link",
"title" : "Friend Name"
},
"1" : {
"id" : "1",
"name" : "Friend2 Name",
"href" : "/test/link2",
"title" : "Friend2 Name"
}
}
}
};
Чего я здесь не понимаю? Есть ли способ использовать и анализировать эти данные без изменения фактического источника данных?
Комментарии:
1. Это не JSON, это объект JavaScript.
2. @Felix, было бы точнее сказать «Это не JSON, это JavaScript».
3. @Squeegy: Достаточно справедливо 😉
4. Безусловно, я понимаю, что это не объект JSON, а объект JavaScript, и это был мой вопрос. Возможно ли вызвать это, как у меня, и использовать его как есть. Спасибо вам, ребята, за быстрые ответы!!
Ответ №1:
data
объект JavaScript отправляется по ответу, поэтому я предлагаю изменить файл на JSON и использовать его таким образом:
$.get('/data.json', function(data){
// do here what you need to do with returned data or call callback
console.log(data);
}, 'json');
data.json
файл должен выглядеть примерно так (в основном только объектная нотация, без присвоения и т.д.):
{
"testData" : {
"order" : [21,22,33,32,55,20,41],
"categories" : {
"41" : {
"id" : 41,
"title" : "Foo",
"count" : 100,
"href" : "/foo/Foo/"
},
"20" : {
"id" : 20,
"title" : "Bar",
"count" : 100,
"href" : "/foo/Bar/"
}
}
},
"following" : {
"order" : [6,5,4,3,1,0],
"friends" : {
"0" : {
"id" : "0",
"name" : "Friend Name",
"href" : "/test/link",
"title" : "Friend Name"
},
"1" : {
"id" : "1",
"name" : "Friend2 Name",
"href" : "/test/link2",
"title" : "Friend2 Name"
}
}
}
}
Помните, что JavaScript лучше всего подходит для программирования на основе событий. Вероятно, вам следует закодировать свое решение с использованием обратных вызовов, потому что иногда оно выполняется асинхронно и возвращает значение до фактического завершения выполнения.
Комментарии:
1. @FelixKling:
.getJSON()
это просто ярлык для.get()
, который является ярлыком для.ajax()
.2. Я знаю, но это более выразительно и будет автоматически анализировать JSON, чего может быть не в случае с
get
, если тип содержимого установлен неправильно.3. @FelixKling: Нет, предположение будет основано на типе MIME (см.
dataType
Настройку на.ajax()
странице документации ). Но я изменил свой ответ, чтобы он был задан явно. Спасибо. Дайте мне знать, если у вас возникнут какие-либо другие вопросы.