问题循环Json

时间:2012-09-08 11:56:02

标签: jquery json

我在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);
    });
}

2 个答案:

答案 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' })的简写,其作用如下:

  • 嘿javascript,你能不能给我url
  • 的JSON内容?
  • 是的,但我有一些事要做,我不能等到服务器回答 - 请告诉我你希望我用这些数据执行什么,并将其包装在一个函数中。与此同时,我将继续使用脚本,因为我需要淡出一些div;
  • ok javascript,这里是:function(playlist){ ... }

这意味着您的function(playlist){ ... }回调会在for循环结束后执行 - 这就是i始终为3的原因。

解决方案?你需要一个闭包来让你的回调在当前的迭代中意识到i - 这个主题并不简短,所以请选择辉煌的John Resig's interactive lecture