如何从mysql获得评级星值?

时间:2013-09-24 10:20:32

标签: javascript ibm-mobilefirst worklight-adapters

在我的基于Worklight的应用程序中,我有一个存储在mysql中的评级值(int)。我将JSON数据作为评级整数值。

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

使用Jquery我需要将该评级值显示为应用程序中的星星图像。 如果值为2,那么我需要显示2个星图像,依此类推。

我该如何做到这一点?

1 个答案:

答案 0 :(得分:0)

看看到目前为止已实现的内容(适配器实现,客户端适配器调用,......)会很有帮助。
没有它,我只能提供一种从数据库中获取值并显示它的可能方法。

假设:

实现:

  1. 在common \ 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. 在adapters \ getStars \ getStars-impl.js文件中:

    var selectStatement = WL.Server.createSQLStatement("select * from users");
    
    function getStars() {    
        return WL.Server.invokeSQLStatement({
            preparedStatement : selectStatement,
            parameters : []
        });
    }
    
  5. 在adapters \ getStars \ getStars.xml文件中:

    ...
    ...
    ...
    <procedure name="getStars"/>
    
  6. 最终结果:

    enter image description here