在我的基于Worklight的应用程序中,我有一个存储在mysql中的评级值(int)。我将JSON数据作为评级整数值。
{"storeId":1000,"zipcode":"600014","rating":3,}
使用Jquery我需要将该评级值显示为应用程序中的星星图像。 如果值为2,那么我需要显示2个星图像,依此类推。
我该如何做到这一点?
答案 0 :(得分:0)
看看到目前为止已实现的内容(适配器实现,客户端适配器调用,......)会很有帮助。
没有它,我只能提供一种从数据库中获取值并显示它的可能方法。
假设:
实现:
在common \ index.html中,例如,有一个空的UL
元素,以便获取的数据将位于列表中:
<ul id="usersAndStars"></ul>
在常见的\ 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
});
}
然后处理调用,失败和成功的响应:
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);
};
}
在adapters \ getStars \ getStars-impl.js文件中:
var selectStatement = WL.Server.createSQLStatement("select * from users");
function getStars() {
return WL.Server.invokeSQLStatement({
preparedStatement : selectStatement,
parameters : []
});
}
在adapters \ getStars \ getStars.xml文件中:
...
...
...
<procedure name="getStars"/>
最终结果: