2013-09-24 2 views
0

В моем приложении на основе фона, у меня есть значение рейтинга (int), хранящееся в mysql. Я имею в качестве данных JSON значение целочисленного значения.Как получить оценку звездной ценности от mysql?

{"storeId":1000,"zipcode":"600014","rating":3,} 

Использование JQuery Мне нужно отобразить это рейтинговое значение как изображения звезд в приложении. Если значение равно 2, мне нужно отобразить 2-звездочные изображения и так далее.

Как это сделать?

+0

В основном вы хотите спросить, как читать этот ответ JSON, правильно? –

ответ

0

Было бы полезно увидеть, что вы реализовали до сих пор (адаптация адаптера, вызов клиентского адаптера, ...).
Без этого я могу предоставить только один возможный способ получить значение из базы данных и отобразить его.

Предполагается, что:

  • В вашей базе данных, есть поле «звезды» и значение
  • В общей папке \ изображений в приложении, есть изображение звезды
  • Вы created a SQL adapter and configured it correctly

Реализация:

  1. В общем \ index.html есть, например, пустой UL элемент просто так, что надуманные данные будут в списке:

    <ul id="usersAndStars"></ul> 
    
  2. В общем \ JS \ main.js, вы вызываете адаптер:

    // Of course, you can invoke it whenever you actually want to, and not like below... 
    function wlCommonInit(){ 
        getStarsFromDatabase(); 
    } 
    
    function getStarsFromDatabase() { 
        var invocationData = { 
         adapter: 'getStars', 
         procedure: 'getStars' 
        }; 
    
        WL.Client.invokeProcedure(
         invocationData, 
         { 
          onSuccess: displayStars, 
          onFailure: failedGettingStars 
         }); 
    } 
    
  3. Затем вы справляетесь реакцию вызова, неудачи и успех:

    function failedGettingStars() { 
        alert("failure"); 
    } 
    
    function displayStars(response) { 
        var ul = $('#usersAndStars'); 
        var i, j, li; 
    
        for (i = 0; i < response.invocationResult.resultSet.length; i += 1) {  
         // Create new <li> element and populate it 
         li = $("<li/>").text("Item " + [i+1] + " has " + response.invocationResult.resultSet[i].stars + " stars: "); 
    
         // Add images of a star 
         // Note that this is purely applicative - instead of adding several img tags, 
         // You could simply add an image showing 5 or 2 or 3 or however stars you want... 
         // Or in any other way you want. 
         for (j = 0; j < response.invocationResult.resultSet[i].stars; j += 1) { 
          li.append("<img src='images/\star.png' alt='star'/>"); 
         } 
    
         // Append the <li> element to the <ul> element 
         ul.append(li); 
        }; 
    } 
    
  4. В переходников \ getStars \ getStars-impl.js файл:

    var selectStatement = WL.Server.createSQLStatement("select * from users"); 
    
    function getStars() {  
        return WL.Server.invokeSQLStatement({ 
         preparedStatement : selectStatement, 
         parameters : [] 
        }); 
    } 
    
  5. В переходников \ getStars \ getStars.xml файл:

    ... 
    ... 
    ... 
    <procedure name="getStars"/> 
    

Конечный результат:

enter image description here

+0

Я бы использовал один класс с CSS (звезда как «фоновое изображение»), чтобы вы могли вставить только один элемент в DOM и изменить его ширину с помощью CSS/JavaScript для отображения всех звезд. Это также сохраняет HTTP-запросы. – SeinopSys

+0

Да, я согласен. Однако, как отмечено в фрагментах кода, отображение звезд может быть значительно оптимизировано. Но об этом не идет речь; что пользователь действительно хотел узнать, как обращаться с вызовом адаптера Worklight. –

Смежные вопросы