【问题标题】:IBM Worklight - Unable to display data retrieved using SQL adapterIBM Worklight - 无法显示使用 SQL 适配器检索到的数据
【发布时间】:2023-03-12 17:47:01
【问题描述】:

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

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"
      }
      ] 
      }

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

【问题讨论】:

  • 你得到什么错误?
  • 我在控制台上什么都没有。
  • 当你说'在调用过程中它做得很好'时,你的意思是你确实从'loadFeedSuccess'中的过程中获取数据?
  • 我认为他的意思是调用成功但显示项目失败。
  • @user3465606,调用的结果是什么?将其添加到问题中。

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


【解决方案1】:

首先,您需要更改“项目”:

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

到“结果集”:

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


其次,我将 Worklight 提供的 worklight_training 数据库脚本与问题中的代码 sn-ps 结合使用。我已将 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);      
    }
}

最终结果是显示users 表中的firstName 值。
然后,您可以更多地使用 JavaScript 来显示 想要从 您的 数据库表中得到什么...

顺便说一句,如您所见...Chrome 开发工具中的控制台确实显示了一些东西...您声称在您的情况下它没有。你需要弄清楚这一点。

【讨论】:

  • @user3465606,如果我的回答有助于解决您的问题,请标记为已回答。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-01-03
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多