调用 Worklight Adapter 并将列表视图中的 JSON 数据显示为字符串

Posted

技术标签:

【中文标题】调用 Worklight Adapter 并将列表视图中的 JSON 数据显示为字符串【英文标题】:Invoking Worklight Adapter and Displaying that JSON data in list view as strings 【发布时间】:2015-01-09 10:14:00 【问题描述】:

这是我的 adapter.impl.js 代码。

 //This procedure implementation is to get all the details from the table which in database.
 var procedure1Statement = WL.Server.createSQLStatement("select * from employee");
 function procedure1() 
return WL.Server.invokeSQLStatement(
    preparedStatement : procedure1Statement,
    parameters : []
);

这是我在 worklight 中从 SQL 适配器检索到的 JSON 数据。


"isSuccessful": true,
"resultSet": [
  
     "EMAIL": "bkandregula@gmail.com",
     "ID": 1,
     "NAME": "Bhanu Kandregula"
  ,
  
     "EMAIL": "rbkandregula@gmail.com",
     "ID": 2,
     "NAME": "Raghu Kandregula"
  ,
  
     "EMAIL": "shyamsurisetty@gmail.com",
     "ID": 3,
     "NAME": "Shyam Surisetty"
  ,
  
     "EMAIL": "bunny@gmail.com",
     "ID": 4,
     "NAME": "Bunny"
  ,
  
     "EMAIL": "divya@gmail.com",
     "ID": 5,
     "NAME": "Divya Sri"
  ,
  
     "EMAIL": "chandhu@gmail.com",
     "ID": 6,
     "NAME": "Chandana"
  
]

我不是要从客户端调用此适配器并在我的移动控制台上的列表视图中显示此数据。为此,这是我在客户端 js 文件中使用的代码。

function wlCommonInit()
LoadSQLRecords();

function loadSQLRecords()
var invocationData = 
    adapter : 'mysqladap',
    procedure : 'procedure1',
    parameters : []
;

WL.Client.invokeProcedure(invocationData,
    onSuccess : loadSQLQuerySuccess,
    onFailure : loadSQLQueryFailure
);


function loadSQLQuerySuccess(result) 
    WL.Logger.debug("Retrieve success" +  JSON.stringify(result));
    displayFeeds(result.invocationResult.resultSet);


function loadSQLQueryFailure(result) 
    WL.Logger.error("Retrieve failure");


function displayFeeds(items) 
    var ul = $('#itemsList');
    for (var i = 0; i < items.length; i++) 
        var li = $('<li/>').html(items[i].id);
        li.append($('<li/>').html(items[i].name));
        li.append($('<li/>').html(items[i].email));
        li.append($('<hr>'));
        ul.append(li);
    
  

这是我的 HTML 文件代码,用于在屏幕上显示我的数据。

<div id="wrapper">
        <ul id="itemsList"></ul>
 </div>

但这不适用于我。我一直在搜索许多博客和网站,但我无法触发这个。请帮助我调用适配器并在移动控制台的列表视图中显示该数据。谢谢。

【问题讨论】:

打开 Chrome 的开发者工具并在其控制台中检查您遇到了什么错误...确保在控制台打开时刷新页面。 完成@IdanAdar,但无法获得输出。代码看起来不错,但不知道我哪里出错了。 什么意思?您在控制台中看到了什么?你得到哪个错误?你在屏幕上看到了什么? 将您的adapter-impl.js代码添加到问题中。 我做了@IdanAdar,请看看我的适配器代码。谢谢。 【参考方案1】:

您需要更正以下内容,然后重新部署应用程序。

    你拼错了一个函数名:

    LoadSQLRecords 应该是loadSQLRecords

    function wlCommonInit()
        LoadSQLRecords(); // Upper-case 'L'; should be lower-case.
    
    
    function loadSQLRecords()
        var invocationData = 
            adapter : 'MySQLadap',
            procedure : 'procedure1',
            parameters : []
        ;
    ;
    

    在修复之前,您应该在 Chrome DevTools 的控制台中看到以下内容:

    worklight.js:5147 Uncaught Exception: Uncaught ReferenceError: LoadSQLRecords is not defined at (compiled_code):4
    main.js:4 Uncaught ReferenceError: LoadSQLRecords is not defined
    

    您需要更改以下内容才能实际显示任何值。

    使用items.invocationResult.resultSet 对属性使用正确的大小写

    发件人:

    for (var i = 0; i < items.length; i++) 
        var li = $('<li/>').html(items[i].id);
        li.append($('<li/>').html(items[i].name));
        li.append($('<li/>').html(items[i].email));
        li.append($('<hr>'));
        ul.append(li);
    
    

    收件人:

    for (var i = 0; i < items.invocationResult.resultSet.length; i++) 
        var li = $('<li/>').html(items.invocationResult.resultSet[i].ID);
        li.append($('<li/>').html(items.invocationResult.resultSet[i].NAME));
        li.append($('<li/>').html(items.invocationResult.resultSet[i].EMAIL));
        li.append($('<hr>'));
        ul.append(li);
    
    

【讨论】:

完成。它正在工作@Idan Adar。感谢您的支持。 @BhanuPrakash,很高兴听到。请标记为已回答。 完成。谢谢@Idan Adar

以上是关于调用 Worklight Adapter 并将列表视图中的 JSON 数据显示为字符串的主要内容,如果未能解决你的问题,请参考以下文章

将 cookie 附加到 WorkLight Adapter 响应标头

IBM Worklight Adapter 需要 OAuth

如何在 Worklight 中查看 .adapter 文件的内容

Worklight、SQL-Adapter、指定为定义者的用户 ('mobilefirst'@'localhost') 不存在

IBM Worklight:从后端调用推送通知适配器

IBM Worklight 6.0 - 调用适配器过程时出错