1

オンライン データベースから JSON データを取得するようにテーブルと行を設定しましたが、データがページ分割されていることが問題です。私のデータは最初のページに表示されますが、特により多くのページが動的に作成される場合に、他のページ分割されたページから JSON データをプルするように JSON プルを設定する方法がわかりません。つまり、page=4、page=5 です。例:

現在取得中のデータ -

最初のページ - http://testsite.com/data.json

ページ分割されたページ (1) - http://testsite.com/data.json?page=2

ページ分割されたページ (2) - http://testsite.com/data.json?page=3

など。私のコードが現在どのように設定されているかは次のとおりです。

    var win = Ti.UI.currentWindow;



var data = [],


    Detail = require('detail');

var barList = Titanium.UI.createTableView({
    height: 366,
    width: 320,
    top: 0,
    left: 0
});
win.add(barList);
barList.addEventListener('click', function (e) {
    Ti.API.info('data: ' + JSON.stringify(e.rowData.data));
    var detail = new Detail(e.rowData.data);
    detail.open({modal:true});
});

var xhr = Titanium.Network.createHTTPClient();
xhr.onload = function () {
    var json = JSON.parse(this.responseText);
    Ti.API.info(json.length);
    for (var i = 0; i < json.length; i++) {
        var row = Titanium.UI.createTableViewRow({
            className: 'bar-row',
            data: json[i].bar, 
            hasChild: true,
            filter: json[i].bar.name
        });
        var titleLabel = Titanium.UI.createLabel({
            text: json[i].bar.name,
            font: {
                fontSize: 14,
                fontWeight: 'bold'
            },
            left: 70,
            top: 5,
            height: 20,
            width: 210
        });
        row.add(titleLabel);

        data.push(row);
    }
    barList.setData(data);
};
xhr.open('GET', 'http://testsite.com/data.json');
xhr.send();

win.open();
4

1 に答える 1

0

これはどう?

var win = Ti.UI.currentWindow,
    data = [],
    Detail = require('detail');

var barList = Titanium.UI.createTableView({
    height: 366,
    width: 320,
    top: 0,
    left: 0
});
win.add(barList);

barList.addEventListener('click', function (e) {
    Ti.API.info('data: ' + JSON.stringify(e.rowData.data));
    var detail = new Detail(e.rowData.data);
    detail.open({modal:true});
});

function fetchTableData(page) {
    if(!page) return alert('Please add a page number!');
    page = page > 1 ? "?page=" + page : "";
    var xhr = Titanium.Network.createHTTPClient();
    xhr.onsuccess = function() {
        if(this.responseText) {
            appendTableData(this.responseText);
        }
    }
    xhr.open('GET', 'http://testsite.com/data.json' + page);
    xhr.send();
}

function appendTableData(response) {
    var json = JSON.parse(response);
    for (var i = 0; i < json.length; i++) {
        var row = Titanium.UI.createTableViewRow({
            className: 'bar-row',
            data: json[i].bar, 
            hasChild: true,
            filter: json[i].bar.name
        });
        var titleLabel = Titanium.UI.createLabel({
            text: json[i].bar.name,
            font: {
                fontSize: 14,
                fontWeight: 'bold'
            },
            left: 70,
            top: 5,
            height: 20,
            width: 210
        });
        row.add(titleLabel);
        barList.appendRow(row);            
    }
}

win.open();
fetchTableData(1);

応答の有効性チェックをさらに行う必要があるかもしれないことに注意してください...

于 2013-09-20T12:02:35.003 に答える