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);

Към "resultSet":

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, ако отговорът ми помогна за разрешаването на проблема ви, моля, маркирайте като отговорено. - person Idan Adar; 06.09.2014