为什么我的应用程序不会在TableView中显示JSON数据?

时间:2016-05-21 17:56:19

标签: javascript json mobile appcelerator appcelerator-titanium

我仍然是Appcelerator的新手,并且使用带有JavaScript的JSON文件。我知道我正在正确解析JSON文件,并正确地分解数据,但由于某种原因,应用程序似乎无法正确获取JSON数据,而且我总是得到onerror触发onload的。{这是我的代码:

// Set the background color with no windows or tabs
Titanium.UI.setBackgroundColor('#000');

// Create the window
var win1 = Titanium.UI.createWindow({  
title:'Challenge Window',
backgroundColor:'#fff',
});

// Store the image and its properties
var image = Titanium.UI.createImageView({
    image: "https://myavantiservices.files.wordpress.com/2015/02/helloworld.gif",
    height: 380,
    width: 380,
    center: 512,
    top: -50
});

var table = Ti.UI.createTableView();
var tableData = [];
var json, line1, city, state, zip, appfile_id, id, body;

// Parse our JSON file using onload
var url = "https://raw.githubusercontent.com/JordanAshton/CodingChallenge/master/JSONtwitterOutput.txt";
var xhr = Ti.Network.createHTTPClient({
    onload: function() {
        json = JSON.parse(this.responseText);
        for (var i = 0; i < json.things.length; i++){
            var row = Ti.UI.createTableViewRow({
                className: 'row',
                objectName: 'row',
                rowID: i,
                height: 100,
                borderColor: accentColor,
                borderWidth: 1,
                borderRadius: 5,
                backgroundImage:'../images/opbg.png',
                filter:json.data[i].line1 + "\n" + json.data[i].city + "," + json.data[i].state + " " + json.data[i].zip,
                appfile_id: json.data[i].appfile_id,
                message_id: json.data[i].id,
                messagebody: json.data[i].body
            });
            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();

// Add the image to the window and open the window
win1.add(image);
win1.add(table);
win1.open();

我正在解析的JSON文件:

{"results":[

     {"text":"@twitterapi  https://code.google.com/archive/p/twitter-api/issues/353",

     "to_user_id":396524,

     "to_user":"TwitterAPI",

     "from_user":"jkoum",

     "metadata":

     {

      "result_type":"popular",

      "recent_retweets": 109



     },

     "id":1478555574,   

     "from_user_id":1833773,

     "iso_language_code":"nl",

     "source":"twitter< /a>",

     "profile_image_url":"http://s3.amazonaws.com/twitter_production/profile_images/118412707/2522215727_a5f07da155_b_normal.jpg",

     "created_at":"Wed, 08 Apr 2009 19:22:10 +0000"},

     ... truncated ...],

     "since_id":0,

     "max_id":1480307926,

     "refresh_url":"?since_id=1480307926&q=%40twitterapi",

     "results_per_page":15,

     "next_page":"?page=2&max_id=1480307926&q=%40twitterapi",

     "completed_in":0.031704,

     "page":1,

     "query":"%40twitterapi"}

}

1 个答案:

答案 0 :(得分:1)

您正在解析的JSON文件的根节点是“结果”;但是你正在迭代到json.things.length,在那时它应该是0,然后没有创建行并将其添加到tableView。

同样,那些json.data[i].<some_property>看起来不合时宜。

H个。