我在json中遇到问题。
在下面的代码中,循环网址不正常,警报中的ID始终为3.有人可以告诉我这里的错误吗?
var urls = ["http://soundcloud.com/disclosuremusic/sets/the-face-ep-1", "http://soundcloud.com/skibsthekid/sets/the-pink-slip", "http://soundcloud.com/disclosuremusic/sets/the-face-ep-1"];
for (var i = 0, url; url = urls[i]; i++) {
console.log(i);
$.getJSON('http://api.soundcloud.com/resolve?url=' + url + '&format=json&consumer_key=' + consumer_key, function(playlist) {
alert(i + playlist.title);
});
}
答案 0 :(得分:2)
$.each(urls,function(key,value) {
console.log(value);
$.getJSON('http://api.soundcloud.com/resolve?url=' + value + '&format=json&consumer_key=' + consumer_key, function(playlist) {
alert(i + playlist.title);
});
});
答案 1 :(得分:1)
是的,在您的情况下,警报中的ID将始终为3 - 但由于javascript体系结构。
$.getJSON()
方法是$.get({ format : 'JSON' })
的简写,其作用如下:
url
的function(playlist){ ... }
。这意味着您的function(playlist){ ... }
回调会在for
循环结束后执行 - 这就是i
始终为3的原因。
解决方案?你需要一个闭包来让你的回调在当前的迭代中意识到i
- 这个主题并不简短,所以请选择辉煌的John Resig's interactive lecture。