【发布时间】:2012-10-13 16:55:55
【问题描述】:
我想创建一个这样的 JSON 数组:
var ddBasic = [
{ text: "Facebook", value: 1, },
{ text: "Twitter", value: 2, },
{ text: "LinkedIn", value: 3, },
{ text: "Foursquare", value: 4, }
];
我使用的是 last.fm 中的数据,所以应该是这样的:
var tags = [
{ text: "rock", value: "rock", },
{ text: "pop", value: "pop", },
];
它需要在末尾有一个逗号,因此ddslick 下拉功能会忽略 imageSrc 和其他可用于下拉的内容,否则会引发此错误:
Uncaught TypeError: Cannot read property 'imageSrc' of undefined
为了将所有内容联系在一起,我有:
$('#tag').ddslick({
data: tags,
onSelected: function(selectedData) {}
});
这是获取标签的函数:
var tags = [];
var getTopTracks = function () {
$.getJSON(
settings.PHP_REQUEST_URL, {
method: "tag.getTopTags",
api_key: settings.LASTFM_APIKEY,
format: "json",
},
function (data) {
var limit = 50;
data.toptags.tag.sort(function (t1, t2) {
return t2.count - t1.count;
});
$.each(data.toptags.tag, function (i, item) {
if (i > limit) return false;
console.log(item.name);
tags.push({
text: item.name,
value: item.name
});
});
});
};
// event handlers (load quando o form é invocado só)
getTopTracks();
alert(tags.length);
// define tema para a combobox
$('#tag').ddslick({
data: tags,
onSelected: function (selectedData) {}
});
我怎样才能做到这一点?
【问题讨论】:
-
你是说逗号可以正常工作?我不明白这会有什么不同。
-
哦...显然不是逗号,它是我数组中的东西。我正在使用
tags.push({"text" : item.name, "value" : item.name});推送值 - 这是正确的语法吗?推后长度显示为0,不知道怎么回事。 -
检查控制台是否有错误...
item是否已定义? -
@sachleen: 可能,但这意味着有另一个
tags变量隐藏在某个地方(嗯:在哪里?)因为否则push会抛出类似can not call push on undefined的东西 -
已修复,这是因为我试图在 AJAX 完成请求之前获取值。都修好了。非常感谢您的帮助。