jquery プラグイン評価ウィジェットを実装しました。データを取得するために ajax 呼び出しを行うまで、うまく機能します。新しい要素に追加するにはプラグインが必要です。
スクリプトを関数にカプセル化し、成功したら関数を再度呼び出そうとしましたが、うまくいきませんでした。
また、成功せずに関数を呼び出すこともできないので、それが私の主な問題です。
これを関数に変換して、ページの読み込みと ajax 呼び出しで呼び出すにはどうすればよいでしょうか。以下に示すように、私はそれを囲んでみました。
function RatingWidget(e) {
// jQuery.noConflict();
$(document).ready(function() {
//we bind only to the rateit controls within the products div
//$('#products .rateit').bind('rated reset', function (e) {
$(".rateit").bind('over', function(event, value) {
$(this).attr('title', value);
});
$(" .rateit").bind('rated reset', function(e) {
var ri = $(this);
// var msg = ri.next();
// var msg = ri.next('div .ratemsg');
var msg = $(this).parents().nextAll("div.ratemsg:first")
//if the use pressed reset, it will get value: 0 (to be compatible with the HTML range control), we could check if e.type == 'reset', and then set the value to null .
var value = ri.rateit('value');
//var productID = ri.data('productid'); // if the product id was in some hidden field: ri.closest('li').find('input[name="productid"]').val()
var ratingid = ri.data('ratingid');
// var ratingtest = ri.data('ratingtest');
var currentTime = new Date()
var month = currentTime.getMonth() + 1
var day = currentTime.getDate()
var year = currentTime.getFullYear()
var dateoftweet = (month + "/" + day + "/" + year)
// var dateoftweetparse = Date.parse(dateoftweet);
var hours = currentTime.getHours()
var minutes = currentTime.getMinutes()
if (minutes < 10) {
minutes = "0" + minutes
}
var timeoftweet = (hours + ":" + minutes + " ")
// var timeoftweetparse = Date.parse(timeoftweet);
//maybe we want to disable voting?
ri.rateit('readonly', true);
$.ajax({
url: '/Home/GetRating',
//your server side script
data: {
id: ratingid,
value: value,
tweetday: dateoftweet,
tweettime: timeoftweet
},
//our data
type: 'POST',
success: function(data) {
//$('#ratemsg').html(data);
msg.html("<B>The TweetId is " + ratingid + " the vote value is " + value + " " + dateoftweet + " " + timeoftweet + "</b>");
},
error: function(jxhr, msg, err) {
// $('#response').append('<li style="color:red">' + msg + '</li>');
msg.html(data);
}
});
});
});
}