问题
I am trying to fetch data from a database and display it in the app.
Below is my code. The invokation is doing well, but the data is not displayed.
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>
this is what I get on invoking the procedure
{
"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"
}
]
}
I just want all these things to be printed on the screen
回答1:
First, you need to change "Items":
if (result.invocationResult.Items.length>0)
displayFeeds(result.invocationResult.Items);
To "resultSet":
if (result.invocationResult.resultSet.length>0)
displayFeeds(result.invocationResult.resultSet);
Second, I've used the worklight_training
database script Worklight provides in conjunction with your code snippets from the question. I've altered the displayFeeds
function to this:
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);
}
}
The end result was displaying the firstName
values from the users
table.
You can then play with your JavaScript a bit more to display what you want from your database table...
BTW, as you can see... the console in Chrome Dev Tools does show something... which you claim in your case it does not. You need to figure that out.
来源:https://stackoverflow.com/questions/22670179/ibm-worklight-unable-to-display-data-retrieved-using-sql-adapter