javascript - 显示 JSONP 对象不起作用

标签 javascript ajax jquery jsonp

我有一个 JSONP,我想在列表中显示它,我设法在列表中显示文件中的艺术家姓名。但现在我想显示第三个 JSONP 对象,但我似乎可以获取它。我该怎么做?

我想显示 JSONP 中的 "links": { "artists.albums": { href: "...", ...}

JSONP 文件位于此处:http://pcampbellem-test.nodejitsu.com/api/v1/artists.json?callback=MyCallback

JSONP(取自上面的网址以便于阅读):

MyCallBack({
    "artists": [
        {"id":"1","name":"Radiohead","website":"http://radiohead.com/","href":"/api/v1/artists/1.json"},
        {"id":"2","name":"Nick Cave & The Bad Seeds","website":"http://www.nickcave.com/","href":"/api/v1/artists/2.json"},
        {"id":"3","name":"John Frusciante","website":"http://johnfrusciante.com/","href":"/api/v1/artists/3.json"}
    ],

    "meta": {
        "artists": {
            "page": 1,
            "page_size": 10,
            "count": 3,
            "includes": [],
            "page_count": 1,
            "previous_page": null,
            "next_page": null,
            "previous_href": null,
            "next_href": null
        }
    },

    "links": {
        "artists.albums": {
            "href": "/api/v1/albums.json?artist_id={artists.id}", // I just wanna fetch this bit and display it in a list
            "type": "albums"
        }
    }
});

JS:

(function($, window) {

  var jsonUrl = 'http://pcampbellem-test.nodejitsu.com/api/v1/artists.json?callback=MyCallback'

  $.ajax({
      type: 'GET',
      url: jsonUrl,
      async: false,
      jsonpCallback: 'MyCallback',
      contentType: "application/json",
      dataType: 'jsonp',
      success: function(data) {

          $.each(data, function(key, val) {

              if (key === 'artists') {

                  for(var i = 0, max = val.length; i < max; i++) {
                      $('#artists-list').find('ul').append('<li><a href="' + val[i].website + '" class="edit">' + val[i].name + '</a></li>');
                  }
              }

              console.log(val.links); // this throws an error...
          });

      },

      error: function(err) {
          console.log(err.message);
      }
  });

}(jQuery, window));

最佳答案

success: function(data) {
    var albums_href = data.links['artists.albums'].href;
    // Do something with albums_href
    // Display list of artists
    $.each(data.artists, function(i, artist) {
        $('#artists-list ul').append('<li><a href="' + artist.website + '" class="edit">' + artist.name + '</a></li>');
    });
}

您必须对artists.albums 使用数组表示法,因为属性名称包含标识符中不允许的字符。

关于javascript - 显示 JSONP 对象不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17666348/

相关文章:

javascript - 如何正确地将单击的按钮属性值传递给表单提交事件?

javascript - 迭代省略了一些元素

javascript - BrowserStack - Node.js 并发测试

javascript - node.js 可以用作在 Web 应用程序中运行任意服务器端 Javascript 的框架吗?

javascript - 在模块类中使用 ajax 处理 <select> 值,prestashop 1.6

javascript - History.js 和同源策略遍历 SSL

javascript - 如何在滚动窗口时转到另一个带有动画的页面?

javascript - 我无法在我的网站上显示产品的详细信息

javascript - 简单/基本 Jquery 或 Javascript 字符串替换多个值

jquery - 如何在 jquery mobile 中添加像短信一样的文本字段(标签计算下面留下的租船人的数量)。