当从另一个ajax输出时,Ajax不会调用

时间:2015-06-10 11:21:51

标签: javascript php jquery ajax

我有使用live ajax php的评论系统,还包括对该评论的投票系统

逻辑:当我发布新评论时,系统将使用方法发布调用ajax函数,并在textarea上方显示响应以进行评论,该响应包括投票系统(类=" with_unique_id"),但是当我点击那个投票时,它不会调用ajax函数(在浏览器控制台中没有发生任何事情),而在当前评论中显示新评论的上方,它工作正常。

这是我的ajax投票代码

jQuery(document).ready(function($){
      $(".voteMe").click(function() {
        var voteId = this.id;
        var upOrDown = voteId.split('_'); 
        $.ajax({
            type: "post",
            url: "<?php echo base_url('blog/likepost');?>/"+upOrDown[0],
            cache: false,               
            data:'voteId='+upOrDown[0] + '&upOrDown=' +upOrDown[1],
            success: function(response){                
                try{
                    if(response=='true'){   
                        var newValue = parseInt($("#"+voteId+'_result').text()) + 1;            
                        $("#"+voteId+'_result').html(newValue);
                        document.getElementById('likeStatus_'+upOrDown[0]).innerHTML = 'Success';
                        $("#likeStatus_"+upOrDown[0]).show();
                        setTimeout(function() { $("#likeStatus_"+upOrDown[0]).hide(); }, 5000);             
                    }else{
                        $("#likeStatus_"+upOrDown[0]).show();
                        document.getElementById('likeStatus_'+upOrDown[0]).innerHTML = 'Liked';
                        setTimeout(function() { $("#likeStatus_"+upOrDown[0]).hide(); }, 5000);
                    }
                }catch(err) {       
                    alert(err.message);
                }       
            },
            error: function(){                      
                alert('Error while request..');
            }
         });
    });
});

2 个答案:

答案 0 :(得分:0)

我花了一段时间阅读你的代码,但我想这是根本原因:

 if(response=='true'){   
                    var newValue = parseInt($("#"+voteId+'_result').text()) + 1;            
                    $("#"+voteId+'_result').html(newValue);
                    document.getElementById('likeStatus_'+upOrDown[0]).innerHTML = 'Success';
                    $("#likeStatus_"+upOrDown[0]).show();
                    setTimeout(function() { $("#likeStatus_"+upOrDown[0]).hide(); }, 5000);             
                }

这一行:

$("#"+voteId+'_result').html(newValue);

这将成为您想要再次点击的链接。对? 如果是这样,那么您需要重新分配事件处理程序。 通过替换DOM元素,您还删除了指定的事件处理程序

PS:您的代码非常难以阅读。维持它将是一场噩梦。

答案 1 :(得分:0)

我修复了我的代码,添加了相同的ajax代码函数以响应当前具有不同id的ajax。 三江源