2016-05-21 18 views
0

Ich bin noch ziemlich neu in Appcelerator und JSON-Dateien mit JavaScript verwenden. Ich weiß, dass ich in der JSON-Datei korrekt analysiere und die Daten korrekt zerlege, aber aus irgendeinem Grund scheint die App die JSON-Daten nicht richtig abzurufen, und ich bekomme immer die onerror-Feuerung anstelle der onload. Hier ist mein Code:Warum zeigt meine App keine JSON-Daten in TableView an?

// 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(); 

Die JSON-Datei Ich bin Parsen:

{"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"} 

} 

Antwort

1

Der Wurzelknoten der JSON Datei, die Sie Parsen ist "Ergebnisse"; aber Sie wiederholen bis json.things.length, die an diesem Punkt 0 sein sollte, dann wird keine Zeile erstellt und der TableView hinzugefügt.

Auch diese sehen aus dem Zusammenhang.

Hth.

+0

Also, wie behebe ich das? – Jodo1992

+0

Nun, ich lese auch, dass Sie nur den "onerror" Callback, und nicht die "onload" eine, so scheint es das Problem ist in der http-Anfrage, also vor dem Parsen der JSON-Antwort. Welche Fehlermeldung erhalten Sie? –

+1

Sie müssen die JSON-Datei reparieren. Der eine bei "https://raw.githubusercontent.com/JordanAshton/CodingChallenge/master/JSONtwitterOutput.txt" hat ein ungültiges Format: ~~~ Fehler: Parse-Fehler in Zeile 33: ... 10 +0000 "} , ... abgeschnitten ...], ---------------------^ Erwartung 'STRING', 'NUMMER', 'NULL', ' WAHR ',' FALSCH ',' {',' [' ~~~ –

Verwandte Themen