1

我无法在我的 appcelerator 移动应用程序中解析和显示来自 Bands in Town API 的事件。(iOS) 这是我想在表格中显示的乐队活动。 http://api.bandsintown.com/artists/Lucy%20Seven/events.json?api_version=2.0&app_id=LucySeven 这是我展示它的代码

var win = Ti.UI.currentWindow;

win.hideNavBar();

Ti.UI.backgroundColor = '#050505';

var url = "http://api.bandsintown.com/artists/Lucy%20Seven/events.json?      api_version=2.0&app_id=LucySeven"

var table = Ti.UI.createTableView({

        backgroundColor: '#050505',
        separatorColor:'#110000',
    });
var tableData = [];
var json, artists, name, picture, title, description;

var xhr = Ti.Network.createHTTPClient({
onload: function() {
// Ti.API.debug(this.responseText);

json = JSON.parse(this.responseText);
for (i = 0; i < json.data.length; i++) {
    data = json.data[i];
    row = Ti.UI.createTableViewRow({
        height:'100dp',
        backgroundColor: '#050505',
        separatorColor:'#110000',
    });
  var  name = Ti.UI.createLabel({
        text: title,
        font:{
            fontSize:'17dp',
        fontWeight:'bold'
    },
    height:'auto',
    left:'90dp',
    top:'20dp',
    color:'#eee',
    touchEnabled:true
    });
    row.add(name);


        var  start = Ti.UI.createLabel({
        text:   description,
        font:{
            fontSize:'12dp'
        },
    height:'auto',
    left:'90dp',
    bottom:'20dp',
    color:'#eee',
    touchEnabled:true
    });
    row.add(start);


  // Avatar
            var img = Ti.UI.createImageView({
                image   : thumb_url ,
                width   : 70,
                height  : 70,
                top     : 5,
                bottom  : 5,
                borderRadius: 5,
                borderColor: '#eee',
                left    : 5
            });
            row.add(img);


    tableData.push(row);
    }

table.setData(tableData);
},
onerror: function(e) {
Ti.API.debug("STATUS: " + this.status);
Ti.API.debug("TEXT:   " + this.responseText);
Ti.API.debug("ERROR:  " + e.error);
alert('There was an error retrieving the remote data. Try again.');
},
timeout:5000
});

xhr.open("GET", url);
xhr.send();

这里有一个 json 的 API 响应: http ://www.bandsintown.com/api/responses#events-json 我真的看不出有什么问题......也许我看不到我错过了什么?如果有人能指出我正确的方向,我将不胜感激。我尝试过:data.title data.artists.title 标题艺术家.titel 等等,但我的 tableview 中没有显示任何内容.....谢谢 //R

4

1 回答 1

1

after的价值this.responseText和价值是什么?在 JSON 响应中,我没有看到属性,所以我不确定应该是什么。同样在你给予但从未被给予价值。jsonJSON.parsedatajson.dataTi.UI.createLabeltest: titletitle

我怀疑您在for循环中真正想要的是:

json = JSON.parse( this.responseText ); // `json` will be an array of objects

for (i = 0; i < json.length; i++) {
  data = json[ i ];
  // ...

  var name = Ti.UI.createLabel( {
    text: data.title,
    // ...
  } );
}

调试它的关键与调试许多东西一样——找出你在每一步都有什么数据(我从未使用过 Titanium,但它console.log至少必须有类似的东西)并弄清楚它与你的期望有何不同.

于 2012-05-17T21:07:06.953 回答