2013-06-11 2 views
0

나는 투표 한 후 json 출력을 얻으려고하지만 투표 후에는 성공 메시지를 얻을 수 없습니다. 어떤 종류의 json 출력이 투표 페이지에 작성해야합니까? pls 날 도와 줘요. 나는 심지어 json json을 모른다. 그러나 나는 이것을 나의 사이트에 적용했다. 모든 것은 괜찮다. 투표는 데이터베이스에 성공적으로 기록되지만 마지막 단계에서 업데이트 된 새 투표 값을 작성해야하지만 coludn't. 내가 오류 메시지를 사용할 때 경고하지만 성공할 경우 작동하지 않습니다. 내 페이지는 ASP 언어입니다. 도움이 pls.jquery 및 json 응답 데이터

(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); 

답변

0

투표가 활성 페이지에 투표 쇼 (또는 성공 메시지)를 가지고, 데이터베이스에 저장되면, 당신은 당신이 업데이트하려면 다음 jQuery로 자사의 HTML을 렌더링 할 요소를 선택해야합니다 .

이 코드는 아약스 코드의 성공 섹션에 포함됩니다. 예를 들어

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); 
(a 로그인 카운터를 업데이트)