IBM Worklight - 无法显示使用SQL适配器检索的数据

时间:2014-03-26 18:38:16

标签: javascript sql database ibm-mobilefirst worklight-adapters

我正在尝试从数据库中获取数据并将其显示在应用程序中 以下是我的代码。调用运行良好,但数据未显示。

sqlAdapter-impl.js

var selectStatement = WL.Server.createSQLStatement("select * from studentinfo");

function getStudentInfos() {    
    return WL.Server.invokeSQLStatement({
        preparedStatement : selectStatement,
        parameters : []
    });
}

sqlAdapter.js

window.$ = window.jQuery = WLJQ;

function wlCommonInit() {
    GetEmployeeData();
}

function GetEmployeeData() {
    var invocationData = {
        adapter : 'sqlAdapter',
        procedure : 'getStudentInfos'
    };

    WL.Client.invokeProcedure(invocationData,{
        onSuccess : loadFeedsSuccess,
        onFailure : loadFeedsFailure
    });
}

function loadFeedsSuccess(result){
    WL.Logger.debug("Feed retrieve success");
    busyIndicator.hide();
    if (result.invocationResult.Items.length>0) 
        displayFeeds(result.invocationResult.Items);
    else 
        loadFeedsFailure();
}

function displayFeeds(items){
    var ul = $('#itemsList');
    for (var i = 0; i < items.length; i++) {
        var li = $('<li/>').html(items[i].sid);
        var pubDate = $('<div/>', {'class': 'pubDate'}).html(items[i].sname);
        li.append(pubDate);     
        ul.append(li);
    }
}

sqlAdapter.html

<body id="content" style="display: none;">
    <div id="itemsList"></div>

    <script src="js/initOptions.js"></script>
    <script src="js/sqlAdapter.js"></script>
    <script src="js/messages.js"></script>
</body>

这是我调用程序

的原因
    {
    "isSuccessful": true,
    "resultSet": [
    {
     "sclass": "PUC",
     "sgrade": "A+",
     "sid": "PUC001",
     "sname": "Rohan"
     },
     {
     "sclass": "PUC",
     "sgrade": "A",
     "sid": "PUC002",
     "sname": "Rakesh"
     },
    {
     "sclass": "PUC",
     "sgrade": "C",
     "sid": "PUC003",
     "sname": "Raj"
     },
     {
     "sclass": "PUC",
     "sgrade": "E",
     "sid": "PUC004",
     "sname": "Roman"
      }
      ] 
      }

我只想把所有这些东西都打印在屏幕上

1 个答案:

答案 0 :(得分:0)

首先,您需要更改&#34;项目&#34;:

if (result.invocationResult.Items.length>0) 
        displayFeeds(result.invocationResult.Items);

To&#34; resultSet&#34;:

if (result.invocationResult.resultSet.length>0) 
        displayFeeds(result.invocationResult.resultSet);


其次,我使用了Worklight提供的worklight_training数据库脚本以及问题中的代码段。我已将displayFeeds功能更改为:

function displayFeeds(items) {
    var ul = $('#itemsList'), i, li;

    for (i = 0; i < items.length; i += 1) {     
        // Create new <li> element and populate it
        li = $('<li/>').text(item.firstName);   
        // Append the <li> element to the <ul> element
        ul.append(li);      
    }
}

最终结果是显示firstName表中的users值 然后,您可以更多地使用JavaScript来显示 数据库表中 所需的内容...

enter image description here

顺便说一下,正如你所看到的...... Chrome开发工具中的控制台确实显示了一些东西 ...你声称它没有。你需要明白这一点。