2

我正在显示最初显示为选项卡的特定实体的反馈和评级。当用户单击选项卡时,我正在使用

$.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);
    });

问题就在这里。我正在使用这个插件来显示星级。下面是初始化代码

        $('#star').raty({
        readOnly: true,
        number : 10,
        start:   $('body').data( 'rating')
    }); 

不管我做什么 评级不起作用。如果我输入一个数字而不是$('body').data( 'rating'),它工作正常。

最初,我尝试使用输入字段的 val 设置隐藏输入字段的值,$('body').data( 'rating')然后分配 start 。但这没有用。

提前致谢

PS:看到我编辑我的代码的答案

        $('#star').raty({
            readOnly: true,
            number: 10,
            start: function() { alert($('body').data('rating'););return $('body').data('rating'); }

当我包含警报时,它正在工作。所以就像我只需要播放这段代码。这该怎么做。});

4

2 回答 2

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')
    });
});​
于 2012-04-25T10:24:17.837 回答
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');
}
}
);

PS我没试过,但它应该工作;)

于 2012-04-25T10:46:57.913 回答