这是我iPhone应用程序中的一个模块。它的目的是从JSON responeText返回一个数组,然后可以将它添加到另一个模块中的TableView的data属性中。将onload函数的结果传递给变量
对于JavaScript来说相对陌生,我无法找到正确的语法将我的数组传递给变量self。
function Events() {
var self = [];
var xhr = Ti.Network.createHTTPClient();
xhr.open('GET', 'http://localhost/ngparser/events.php');
xhr.onload = function() {
var events = JSON.parse(this.responseText),
rows = [];
Ti.API.info('JSON responseText: ');
Ti.API.info(events);
for (var i in events) {
var id = events[i].id,
title = events[i].title;
var amp = title.search('&');
if (amp != -1) {
title = title.replace('&', '&');
}
var row = Ti.UI.createTableViewRow({
title: title,
hasChild: true
});
rows.push(row);
}
// I want this...
return rows;
};
xhr.send();
self = //... to end up here!
self = xhr.send(); //Does not work
return self;
}
module.exports = Events;
我一直在玩回调,但无法得到它的工作。我的eventsCallback似乎没有运行,因为这些信息()没有输出。窗口模块:http://pastebin.com/1kdga075数据模块:http://pastebin.com/bQVi55Pn – 2012-03-16 17:45:55
如果onload回调没有触发,那么必须有错误。尝试在onerror回调中添加一个info(),并查看是否触发。 – DannyM 2012-03-16 18:09:27
事件()中的xhr.onload确实触发了,因为我在函数中从info()获得输出,我的意思是EventsWindow中的eventsCallback()。对于那个很抱歉。我在Events()中添加了“xhr.onerror = function(e){Ti.API.info(e.error);}”,并且控制台中没有错误。 – 2012-03-16 18:31:23