我正在显示特定实体的反馈和评级,最初显示为标签。当用户点击标签时,我会使用
获得反馈和评分$.get()
$.get()
的回归就像这样
some arbit html|||8
这个数据我正在使用|||
进行拆分,并在这种情况下获得8的评级。
$.get('prevfeed.php',{text:text},function(data){
data = data.split("|||");
$('#prevFeedback').html(data[0]);
$('body').data( 'rating', parseInt(data[1]));
alert(parseInt(data[1])+1);
});
问题出在这里。我使用此plugin来显示星级评分。以下是初始化代码
$('#star').raty({
readOnly: true,
number : 10,
start: $('body').data( 'rating')
});
无论我做什么评级都不起作用。如果我输入一个数字而不是$('body').data( 'rating')
,它的工作正常。
最初我尝试使用$('body').data( 'rating')
设置隐藏输入字段的值,然后使用输入字段的val指定start。但这没用。
提前致谢
P.S :看到答案我编辑了我的代码
$('#star').raty({
readOnly: true,
number: 10,
start: function() { alert($('body').data('rating'););return $('body').data('rating'); }
当我加入提醒时,它正在运行。所以就像我只需要显示这段代码一样。这该怎么做。 });
答案 0 :(得分:4)
这是因为在rating
上设置body
属性的代码会延迟,直到AJAX调用完成。
但是,您将在页面加载时启动raty
插件; rating
数据属性仍为undefined
的位置。
您必须延迟插件的初始化,直到AJAX调用完成:
$.get('prevfeed.php', {
text: text
}, function(data) {
data = data.split("|||");
$('#prevFeedback').html(data[0]);
$('body').data('rating', parseInt(data[1]));
$('#star').raty({
readOnly: true,
number: 10,
start: $('body').data('rating')
});
});
答案 1 :(得分:0)
马特给出的解决方案应该有效。另一种解决方案是,在现在点击标签时,您将从prevfeed.php获取数据并尝试相应地设置评级。
您可以尝试这样做。
点击标签:
$("#star").raty ( {
readonly: true,
number: 10,
start: function (){
//get the rating now,
$.get('prevfeed.php',{text:text},function(data){
data = data.split("|||");
$('#prevFeedback').html(data[0]);
$('body').data( 'rating', parseInt(data[1]));
});
//Now you got the rating, just return it
return $('body').data('rating');
}
}
);
P.S。我没试过,但它应该有效;)