跨越upvote插件时显示错误,如堆栈溢出

时间:2018-04-17 21:10:03

标签: javascript php jquery

我有一个jQuery up投票插件。除错误处理外,一切正常。我的投票插件是在foreach循环中。如下所示

  if($RES['counter'] === '1'){
     echo '
             <td>
               <div  data-id='.$id.' class="upvote upvote-serverfault">
                <a style="cursor:pointer;" class="upvote upvote-on" title="This idea is helpful"></a>
                <span class="count">'.$counter.'</span>
                <a class="downvote"></a>
                <span id='.$index.'><span class="votingFeedback"></span>
              </div>
          </td>';  
        }
        else 
            if($RES['counter'] === '-1'){
        echo '
          <td>
            <div  data-id='.$id.' class="upvote upvote-serverfault">
                <a style="cursor:pointer;" class="upvote upvote-down" title="This idea is helpful"></a>
                <span class="count">'.$counter.'</span>
                <a class="downvote downvote-on"></a>
                <span id='.$index.'><span class="votingFeedback"></span>  
            </div>
          </td>';
        }

问题是当用户试图跨越我的投票系统时会抛出错误。错误检查在我的PHP文件中完成并且它正在工作但是当我试图在屏幕上显示错误而不是显示时关于该特定主题的消息是在所有主题id上显示的

enter image description here

我试图制作类似堆栈溢出的东西。如果你试图跨越上升或下跌投票,它会抛出错误,但它似乎比我想象的更难

我的ajax调用我的php文件

<script>
var callback = function(data) {
    $.ajax({
        url: 'voting.php',
        type: 'post',
        data: { id: data.id, up: data.upvoted, down: data.downvoted, star: data.starred },
        success: function(data) {      
        $(".votingFeedback").html(data);
    }
    });
};
$('.upvote').upvote({callback: callback});

 </script>

2 个答案:

答案 0 :(得分:3)

当您从ajax请求中得到回复时,您正在选择页面上的所有投票反馈元素,因为您正在使用类选择器。这是使用班级votingFeedback

更新所有范围

您需要使用对要更新的元素唯一的选择器。你已经有了一个带id的容器div。将其用作选择器的一部分。

$("[data-id='" + data.id + "'] .votingFeedback").html(data);

但是您还需要重命名成功函数的参数,因为您要定义data两次。这意味着data.id不再存在。将其重命名为response或重命名外部函数的参数。

答案 1 :(得分:0)

您将获得无法识别的表达式,因为您正在使用ajax的新结果替换原始数据变量。来自@allcutt的回答尝试将其改为此。

var callback = function(data) {
    $.ajax({
        url: 'voting.php',
        type: 'post',
        data: { id: data.id, up: data.upvoted, down: data.downvoted, star: data.starred },
        success: function(result) {      
        $("[data-id='" + data.id + "'] .votingFeedback").html(result);
    }
    });
};
$('.upvote').upvote({callback: callback});
相关问题