Я использую следующий код для двух ссылок: a.vote-down-0 и a.vote-up-0, они делают то же самое, за исключением того, что каждая из них указывает, будет ли голосование вверх или вниз.
$('a.vote-down-0').click(function() {
var id = $(this).siblings('.reply-id').val();
var ajax_auth_token = $('#auth_token').val();
var c_button = this;
$.post('user/?action=ajax', {
vote_type: 'down',
reply_id: id,
auth_token: ajax_auth_token
}, function(data, return_status) { //return status is just if ajax works or not
var json_data = jQuery.parseJSON(data);
switch(json_data.r_message)
{
case "success":
output = "Yay it works!"; // change
$(c_button).removeClass('vote-down-0').addClass('vote-down-1');
$(c_button).siblings('a.vote-up-0').addClass('vote-up-1').removeClass('vote-up-0'); // ** TODO: this needs to be repeated for all cases below**
break;
case "no_vote":
output = "You've run out of negative votes.";
break;
case "vote_limit":
output = "You can vote anymore today. Limit is 25 per day.";
break;
case "login":
output= "You need to login before you can vote.";
break;
case "own":
output = "You cannot vote on your own comment.";
$(c_button).removeClass('vote-down-0').addClass('vote-down-1');
break;
case "already":
output ="You have already voted on this.";
break;
case "session":
output = "Your login session has expired, please login again.";
break;
}
alert(output);
Здесь читается ответ, отправленный обратно через Json, и выдается отдельное предупреждение для каждого случая.
Есть ли более простой способ сделать это? Как это может быть пересмотрено?