IBM Worklight — невозможно отобразить данные, полученные с помощью адаптера SQL

Я пытаюсь получить данные из базы данных и отобразить их в приложении.
Ниже приведен мой код. Вызов проходит успешно, но данные не отображаются.

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

Я просто хочу, чтобы все эти вещи были напечатаны на экране


person user3465606    schedule 26.03.2014    source источник
comment
Какая у вас ошибка?   -  person Idan Adar    schedule 26.03.2014
comment
я ничего не получаю на консоли.   -  person user3465606    schedule 26.03.2014
comment
Когда вы говорите «при вызове процедуры все идет хорошо», вы имеете в виду, что вы возвращаете данные из процедуры в «loadFeedSuccess»?   -  person eabe    schedule 27.03.2014
comment
Я думаю, он имеет в виду, что вызов прошел успешно, но отображение элементов не удалось.   -  person Idan Adar    schedule 27.03.2014
comment
@ user3465606, каков результат вызова? добавьте его к вопросу.   -  person Idan Adar    schedule 27.03.2014
comment
Я добавил результат вызова процедуры в вопрос   -  person user3465606    schedule 27.03.2014
comment
Предварительный просмотр приложения в Worklight Console в браузере Chrome; откройте инструменты разработчика. Вы видите ошибки?   -  person Idan Adar    schedule 27.03.2014
comment
Нет, я не получаю никакой ошибки, просто экран пустой   -  person user3465606    schedule 27.03.2014
comment
Вы смотрели в Chrome Dev Tools? Там должно быть ЧТО-ТО. Посмотрите на Консоль.   -  person Idan Adar    schedule 27.03.2014


Ответы (1)


Во-первых, вам нужно изменить «Предметы»:

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

В "результат":

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


Во-вторых, я использовал сценарий базы данных worklight_training, который Worklight предоставляет вместе с вашими фрагментами кода из вопроса. Я изменил функцию 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, чтобы отобразить то, что вам нужно от вашей таблицы базы данных. ..

введите здесь описание изображения

Кстати, как вы можете видеть... консоль в Chrome Dev Tools что-то показывает... что, как вы утверждаете, в вашем случае это не так. Вы должны понять это.

person Idan Adar    schedule 27.03.2014
comment
@user3465606 user3465606, если мой ответ помог решить вашу проблему, отметьте его как ответ. - person Idan Adar; 06.09.2014