2012-04-25 101 views
2

我正在顯示對最初顯示爲選項卡的特定實體的反饋和評級。當用戶點擊一個標籤,我正在使用奇怪的JavaScript類型鑄造

$.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分配給開始。但它是沒用的。

在此先感謝

P.S:看到我編輯的代碼

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

當我包括警報,這是工作的答案。所以這就像我只需要重視這些代碼。這個怎麼做。 });

+0

如果在'alert'中用'$('body')。data('rating')替換'parseInt(data [1])+ 1'。 ',你有沒有在警戒中得到正確的答案? – 2012-04-25 10:23:48

+0

你確定'評級'數據是在插件初始化的時候設置的嗎?這可能是一個函數在你期望的時候不會觸發的問題,所以raty插件可能會在定義數據的位之前被初始化(具有未定義的值)。 – 2012-04-25 10:27:24

回答

4

這是因爲在body上設置rating屬性的代碼會延遲到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

我正要寫出相同的解決方案:P – 2012-04-25 10:30:44

+0

只需要補充一點,根據您(@Napster)想要做什麼,您可以初始化raty爲0,並使用@Matt的解決方案在正確值爲準備好:) – DiogoNeves 2012-04-25 10:35:24

+0

現在我得到這個錯誤,像$(「#star」)。raty不是上述代碼的函數 – 2012-04-25 12:38:21

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'); 
} 
} 
); 

附:我沒有嘗試過,但它應該可以工作;)

+0

這也不起作用。而我收到了上面我已經評論過的答案的錯誤。此答案不會返回任何錯誤,但仍然無法使用評分 – 2012-04-25 12:46:24