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')うまくいきます。

最初に、非表示の入力フィールドの値を設定してから、入力フィールドの値で$('body').data( 'rating')開始を割り当てようとしました。しかし、それは役に立たない。

前もって感謝します

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 に答える