2010-10-05 104 views
0

我有工作正常Ajax請求此jQuery代碼,但jQuery是不顯示結果(vote_count)和改變給予好評圖像,就像計算器:jQuery的投票有問題,就像stackoverflow投票?

jQuery代碼:

$(function(){ 
    $("a.vote_up").click(function(){ 
    //get the id 
    the_id = $(this).attr('id'); 

    //the main ajax request 
    $.ajax({ 
     type: "POST", 
     data: "action=vote_up&id="+$(this).attr("id"), 
     url: "ajax/votes.php", 
     success: function(msg) 
     { 
      //echo the votes count 
      $("span#votes_count"+the_id).html(msg); 
      //replace the new vote count 
      $("span#votes_count"+the_id).fadeIn(); 
      //replace the image with active arrow 
      $("#vote_up"+the_id).attr("src", "img/upvoteActive.png"); 

     } 
    }); 
}); 

html代碼:

<li class ="record"> 
<span class="vote_count">$net_vote</span> 

    <a href='#' class='vote_up' id=$id><img src="img/uparrow.png"></a> 

    <a href='#' class='vote_down' id=$id><img src="img/downarrow.png"></a> 
</li> 

再次澄清一切,Ajax請求優良的upvoting正確的答案,問題是在阿賈克斯的成功位,新的計票結果沒有顯示,並且圖像不是b eing更換,以積極的箭頭(就像棧overflower)謝謝:))

+0

什麼是 '味精'?含義是什麼。據我所知,jQuery通常將其包裝到一個對象中。因此你需要做一些類似msg.data的事情。如果你安裝了firebug,請執行'console.log(msg)'並查看返回的內容。 – Glycerine 2010-10-05 18:21:52

+0

它返回從數據庫中計算的計數的數量,並在ajax/votes.php文件中回顯它們,我檢查了螢火蟲,並且控制檯響應是正確的,它只是不會在實際的html頁面上投票計數! :))這麼久,我知道對不起 – getaway 2010-10-05 18:32:24

回答

2

您在success回調中的選擇器都是錯誤的。你有<span class="vote_count">...</span>但隨後嘗試更新它的價值,如果它有一個id:$("span#votes_count"+the_id)...

你可能希望你的代碼更喜歡:

success: function(msg) { 
    //echo the votes count 
    $("span.vote_count#"+the_id).html(msg); 
    //replace the new vote count 
    $("span.vote_count#"+the_id).fadeIn(); 
    //replace the image with active arrow 
    $(".vote_up#"+the_id).attr("src", "img/upvoteActive.png"); 
} 

因此,大家可以看到,你還需要添加對象的id也放入.vote_count元素中。

更新

更清晰,這裏是更新標記:

<span class="vote_count" id="$id">$net_vote</span> 
<a href='#' class='vote_up' id="$id"><img src="img/uparrow.png" /></a> 
<a href='#' class='vote_down' id="$id"><img src="img/downarrow.png" /></a> 

這裏是更新的javascript:

$(document).ready(function() { 
    $("a.vote_up").click(function(){ 
    //get the id 
    var the_id = $(this).attr('id'); 

    //the main ajax request 
    $.ajax({ 
     type: "POST", 
     data: "action=vote_up&id=" + the_id, 
     url: "ajax/votes.php", 
     success: function(msg) { 
     $("span.vote_count#"+the_id).html(msg).fadeIn(); 
     $(".vote_up#" + the_id + " img").attr("src", "img/upvoteActive.png"); 
     } 
    }); 
    }); 
}); 
+0

我已經改變,但仍然沒有工作! :(( – getaway 2010-10-05 18:28:11

+0

我更新了我的答案 – rfunduk 2010-10-05 18:39:44

+0

感謝的vote_count工作hooooray謝謝,+從我給予好評!但圖像依然沒有改變 – getaway 2010-10-05 18:45:32

1

在jQuery代碼使用#votes_count但HTML沒有一個id但vote_count類(不帶S)。

所以應該讀span.vote_count

同樣與給予好評,你用一個id爲目標,但它有一個類..

+0

'vote_count'是一個類,而不是一個ID! – rfunduk 2010-10-05 18:24:44

+0

所以最新的解決方案,我真的得到你的意思!抱歉 – getaway 2010-10-05 18:37:12

-1

你被錯誤地靶向跨度,而且,在發送GET參數一個帖子請求。我已經修復如下:

$(function(){ 
     $("a.vote_up").click(function(){ 
     //get the id 
     the_id = $(this).attr('id'); 

    //the main ajax request 
      $.ajax({ 
       type: "POST", 
       data: {'action' : 'vote_up','id' : $(this).attr("id")} // here 
       url: "ajax/votes.php", 
       success: function(msg) 
       { 
            //echo the votes count 
        $("span.vote_count").html(msg); //here 
        //replace the new vote count 
        $("span.vote_count").fadeIn(); // here 
        //replace the image with active arrow 
           $(".vote_up").find(the_id).attr("src", "img/upvoteActive.png"); // and here 

       } 
      }); 
     }); 
+0

不是這樣,jQuery將以數據形式傳遞的對象序列化爲您在帖子中看到的內容。 jQuery也知道在哪裏把參數放在POST和GET請求中。另外,你在'data:...'行尾忘了逗號:) – rfunduk 2010-10-05 18:25:29

+0

主要的AJAX調用確實,但是.post不是 – 2010-10-05 18:33:21

+0

就像我之前說過的,ajax請求沒有任何問題,它的jquery淡入淡出。id和成功的呼叫,這是問題:)) – getaway 2010-10-05 18:36:24