在Appcelerator中显示JSON结果

时间:2015-03-31 17:18:28

标签: mobile appcelerator appcelerator-mobile

所以我试图切换到Appcelerator,并且在确定它是如何工作方面遇到了一些麻烦。试着只有一个简单的按钮来加载一个新窗口并列出一些SQL条目。我没有收到任何错误,但页面显示为空白。我确定我犯了一个明显的错误,如果有人指出正确的方向会有所帮助。返回的JSON数组是正确的。

INDEX.XML

<Alloy>
    <Window class="container">
    </Window> 
</Alloy>

bookdetails.js

<Alloy> 
   <Window class="container"> 
   </Window> 
</Alloy>

Index.js

var args = arguments;
var data = [];
var win = Ti.UI.createWindow({
title: 'Title goes here',
layout: 'vertical',
backgroundColor: '#123456',
});

var button = Ti.UI.createButton({
    title: 'My button',
    top: 10,
    height: 40,
    width: 200
});

button.addEventListener('click', function() {
    // Check console
    Ti.API.info('User clicked the button ');
    var dataview = Alloy.createController("bookdetails").getView();
    dataview.open();

});
win.add(button);
win.open();

bookdetails.js

var win = Ti.UI.createWindow({
title: 'Title goes here',
layout: 'vertical',
backgroundColor: '#123456',
});
var data = [];
var xhr = Titanium.Network.createHTTPClient();
    xhr.onload = function(){
        var logins = JSON.parse(xhr.responseText);
        for(var i = 0; i < logins.length; i++) {
            data.push[logins[i]];
        }
        var table = Ti.UI.createTableView({ objName: 'table' });
        for (var i = 0; i <= data.length; i++){
             var row = Ti.UI.createTableViewRow({
            className: 'row',
            objName: 'row',
             touchEnabled: true,
             height: 100
         });
  table.setData(data);
  win.add(table);
}

    };
    xhr.open('GET', 'http://www.xxxxxxxx.com/check.php');
    xhr.send();

win.open();

1 个答案:

答案 0 :(得分:0)

您在index.xml和index.js中定义了一个窗口。你不应该这样做。

你的index.js应该看起来像这样:

var args = arguments;
var data = [];

var button = Ti.UI.createButton({
    title: 'My button',
    top: 10,
    height: 40,
    width: 200
});

button.addEventListener('click', function() {
    // Check console
    Ti.API.info('User clicked the button ');
    var dataview = Alloy.createController("bookdetails").getView();
    dataview.open();

});

$.getView().add(button); // this gets the root window of controller and adds a button to it

并且您的数据控制器也应该重构为:

var data = [];
var xhr = Titanium.Network.createHTTPClient();
    xhr.onload = function(){
        var logins = JSON.parse(xhr.responseText);
        for(var i = 0; i < logins.length; i++) {
            data.push[logins[i]];
        }
        var table = Ti.UI.createTableView({ objName: 'table' });
        for (var i = 0; i <= data.length; i++){
             var row = Ti.UI.createTableViewRow({
            className: 'row',
            objName: 'row',
             touchEnabled: true,
             height: 100
         });
  table.setData(data);
  $.getView().add(table);
}

    };
    xhr.open('GET', 'http://www.xxxxxxxx.com/check.php');
    xhr.send();
 $.getView().show();