我现在已经搞砸了一段时间,但我似乎无法完成它。
我从API获取JSON数据任务。数据如下所示,打印为Ti.API.info(this.responseText)
:
[INFO] [{"created_at":"2012-01-09T15:05:25Z","description":"Smullen van onze pizza","id":1,"title":"Pizza Eten","updated_at":"2012-01-09T15:05:25Z","user_id":11},{"created_at":"2012-01-09T15:05:25Z","description":"Lekker Lekker!","id":21,"title":"Ice-Tea Drinken","updated_at":"2012-01-09T15:05:25Z","user_id":11}]
我不太清楚如何处理这些数据。我尝试了几件事:
getData.onload = function(){
var tasks = this.responseText;
for(t in tasks) {
Ti.API.info(t);
}
}
打印出来:
[INFO] 0
[INFO] 1
[INFO] 2
[INFO] 3
[INFO] 4
[INFO] 5
[INFO] 6
直到306。
我尝试的另一件事是:
var tasks = this.responseText;
for(t in tasks)
{
if(tasks.hasOwnProperty(t))
{
Ti.API.info(t + " -> " + tasks[t]);
}
}
这给了我:
[INFO] 0 -> [
[INFO] 1 -> {
[INFO] 2 -> "
[INFO] 3 -> c
[INFO] 4 -> r
[INFO] 5 -> e
[INFO] 6 -> a
[INFO] 7 -> t
[INFO] 8 -> e
[INFO] 9 -> d
另一次尝试:
var tasks = this.responseText;
for(t in tasks)
{
Ti.API.info(t.title);
}
都给:
[INFO] <null>
[INFO] <null>
[INFO] <null>
我真的很困惑如何处理这个JSON以及如何“准备”它以便我可以在tableview中使用它。有人可以帮帮我吗?感谢。
答案 0 :(得分:2)
/* create the tableview row */
makeTableViewRow = function(_object){
var row = Ti.UI.createTableViewRow({
...
}]
var title = Ti.UI.createLabel({
...
text: _object.title,
...
});
row.add(title);
return row;
};
getData.onload = function(){
var tasks = json.parse(this.responseText), /* parse the json string */
_rowsForTableView = []; /* put the rows in here */
/* create the rows */
for (i in tasks){
var _row = makeTableView(tasks[i]);
_rowsForTableView.push(_row);
};
myTableView.setData(_rowsForTableView);
};
答案 1 :(得分:1)
responseText给你一个字符串。您希望它成为一个对象,在您尝试时将其循环或将其放入表中。尝试JSON.parse(this.responseText)来获取该对象。
table.data属性需要一个对象数组,其属性与Ti.UI.TableViewRow对象的属性对齐。我没有尝试将您的代码放入项目中。但看起来你的JSON数据如果被转换为一个对象,就会很好地排列。
换句话说,table.data = JSON.parse(this.responseText)应该可以工作。变量可能不在范围内,因此您可能需要做的不仅仅是将该行放入onload回调中。
答案 2 :(得分:0)
将字符串转换为对象后(通过JSON.parse),可能有助于获得该对象的直观表示 - 您可以在此处使用我的dp_debug组件执行此操作:
http://depressedpress.com/javascript-extensions/dp_debug/
这不是直接解决你的问题,但它会准确显示该对象“看起来”的样子。
它很古老(在JS术语中很古老)但我仍然觉得它对这类事物非常有用。希望它有所帮助。