0

投票後にjson出力を取得しようとしましたが、投票後に成功メッセージを取得できませんでした。投票ページにどのような json 出力を書き込む必要があるか。助けてください。jqueryもjsonも知りませんが、これを自分のサイトに適応させました。すべて問題ありません。投票はデータベースに正常に記録されますが、最後のステップでは、更新された新しい投票値を書き込む必要がありますが、できません。エラーメッセージを使用すると警告が表示されますが、成功しても機能しません。私のページはasp言語です。助けてください。

(function($){
$(function(){
var g='http://my_own_computer.net/';
var h=$('form.thumbsup');
h.submit(function(){return false});
h.find(':input').click(function(){var a=$(this);a.closest('form').trigger('thumsup_vote',[a.val()])});h.bind('thumsup_vote',

function(c,d){
    var e=$(this),
    template=e.attr('name');
    if(e.hasClass('busy')||e.hasClass('disabled'))return;
    e.addClass('busy');
    var f={small:'<img class="spinner" alt="···" src="'+g+'images/spinner_small.gif" />',large:'<img class="spinner" alt="···" src="'+g+'images/spinner_large.gif" />',large_green:'<img class="spinner" alt="···" src="'+g+'images/spinner_large_green.gif" />',large_red:'<img class="spinner" alt="···" src="'+g+'images/spinner_large_red.gif" />'};

switch(template){
case'buttons':e.find('.question, :button').remove();e.find('.result1').after(' '+f.small);break;
case'mini_poll':e.find('.result1, .result2').html(f.small);break;
case'mini_thumbs':e.find('.result1').html(f.small);break;
case'thumbs_up_down':e.find('.result2').html(f.large_red);
case'thumbs_up':e.find('.result1').html(f.large_green);break;
case'up_down':e.find('.result1').html(f.large);break}

$.ajax({
type:'POST',
url:g+'edit.asp?part=qvote',
cache:false,
dataType:'json',
timeout:15000,
data:{thumbsup_id:e.find('input[name=thumbsup_id]').val(),thumbsup_format:e.find('input[name=thumbsup_format]').val(),thumbsup_vote:d},

error:function(a,b){e.find('.error').text(b)},

success:function(a){if('error'in a){switch(a.error){
case'invalid_id':
e.css('visibility','hidden');
alert('The item you voted on no longer exists.');
break;

case'closed':
e.addClass('closed disabled');
alert('Voting has been closed for this item.');
break;

case'already_voted':
case'ip_blocked':
e.addClass('user_voted disabled');
alert('You have already voted on this item.');
break;

case'login_required':
alert('Oy verebilmek için üyemiz olmalısınız.');
break;
default:alert(a.error)
}

//vote saved but new values coming from the page via json arent being able to print to the page 
return}
// The user has voted
e.addClass('user_voted disabled');

for(var i=0;i<a.item.result.length;i++){e.find('.result'+(i+1)).text(a.item.result[i]).fadeTo(0,0.01).fadeTo('slow',1)}

if(template==='mini_poll'){e.find('.graph').css({opacity:0,width:0}).show().filter('.up').animate({opacity:1,width:a.item.votes_pct_up+'%'}).end().filter('.down').animate({opacity:1,width:a.item.votes_pct_down+'%'})}},

complete:function(){e.find('.spinner').remove();e.removeClass('busy')

}})});

$(window).load(function(){if(h.filter('.thumbs_up').length){var a=new Image;a.src=g+'images/spinner_small.gif';var a=new Image;a.src=g+'images/spinner_large.gif';var a=new Image;a.src=g+'images/spinner_large_green.gif';var a=new Image;a.src=g+'images/spinner_large_red.gif'}})})})(jQuery);
4

1 に答える 1

0

投票がデータベースに保存されたら、アクティブなページに投票 (または成功メッセージ) を表示するには、更新する要素を選択し、その html を jquery でレンダリングする必要があります。

このコードは、ajax コードの成功セクションに入ります。

例 (投票カウンターの更新)

var vote_element       = $('#the_ele_with_the_count');
var current_vote_count = Number(vote_element.text());
//convert string to # to add/sub properly

var new_count = current_vote_count+1;

//update in DOM
vote_element.text(new_count);
于 2013-06-11T21:35:12.713 に答える