$ .getJSON и $ .each - PullRequest
       19

$ .getJSON и $ .each

0 голосов
/ 24 июля 2011

Итак, я пытаюсь просмотреть ответ в формате JSON, но, похоже, не могу понять его правильно.

Отрывок:

$.getJSON("/playlist/",function(playlists) {
    $.each(playlists,function() {
        self.playlists[this.playlist.id] = new SC.Playlist(this, self);
        console.log(this);
    })
})

JSON:

jsonp1311444173992([
  {
    is_owner: true,
    id: "wtf",
    playlist: {
      id: "latest1",
      name: "Hot Tracks1",
      version: 0,
      tracks: "33+44+55"
    }
  },
  {
    is_owner: true,
    playlist: {
      id: "latest",
      name: "Hot Tracks",
      smart: true,
      version: 0,
      smart_filter: {
        order: "hotness"
      }
    }
  },
  {
    is_owner: true,
    playlist: {
      id: "latest3",
      name: "Hot Tracks3",
      version: 0,
      tracks: "33+44+55"
    }
  },
  {
    is_owner: true,
    playlist: {
      id: "latest4",
      name: "Hot Tracks4",
      version: 0,
      tracks: "33+44+55"
    }
  },
  {
    is_owner: true,
    playlist: {
      id: "latest5",
      name: "Hot Tracks5",
      version: 0,
      tracks: "33+44+55"
    }
  }
]);

Похоже, это не идет вниз по списку JSON. Не правильно ли я назвал одну из переменных?

Ответы [ 2 ]

5 голосов
/ 24 июля 2011

Это неверный JSON. Вам нужно указать свои ключи:

{
    "is_owner": true,
    "id": "wtf",
    "playlist": {
      "id": "latest1",
      "name": "Hot Tracks1",
      "version": 0,
      "tracks": "33+44+55"
    }
  },

.. и т. Д.

Удобным справочником для будущих проектов является JSONLint JSON Validator

0 голосов
/ 24 июля 2011

Во-первых, JSON, который вы нам показываете ... это не совсем JSON.Я не уверен, что jQuery.getJSON может это прочитать.

Во-вторых, я не знаю, что делает self.Я думаю, что это относится к самой внешней области, верно?

В-третьих, это слишком много, чтобы просить правильно с отступом и работающий код?:

$.getJSON("/playlist/",function(playlists) {
    $.each(playlists,function() {
        self.playlists[this.playlist.id] = new SC.Playlist(this, self);
        console.log(this);
    }
}

Кстати, я бы сделалconsole.log(playlists,self,this) чтобы убедиться, что все в порядке.

...