preventDefault不能处理ajax请求

时间:2017-06-30 07:40:20

标签: jquery ajax

我的var $vote_btn_up = $('.vote_comment_up_' + <?= $model->id ?>); var $vote_btn_down = $('.vote_comment_down_' + <?= $model->id ?>); $vote_btn_up.on('click', function (evt) { evt.preventDefault(); var $commentId = 0; var $postId = 0; if($vote_btn_up.data('comment_id') != 0){ var $commentId = $vote_btn_up.data('comment_id'); } if($vote_btn_up.data('post_id') != 0){ var $postId = $vote_btn_up.data('post_id'); } var $flag = $vote_btn_up.data('flag'); var $userId = $vote_btn_up.data('user_id'); $.ajax({ method : 'post', url : '/admin/site/like-dislike', data : {flag : $flag, comment_id : $commentId, user_id : $userId, post_id : $postId}, success : function( data ){ console.log(data); if($flag == 1){ $('.thumb-up_<?= $model->id ?>').text( data ); }else if($flag == 2){ $('.thumb-down_<?= $model->id ?>').text( data ); } } }); }); 事件不起作用但无法解决原因。我在四处寻找,但没有意识到问题出在哪里。如果我的案子在某处有答案,请原谅!这是我的代码:

onclick=\"setRowId(' + @rowCount + ',\"' + @item.EduQualification + '"\ ,\"' + @item.Year +'"\,\"' + @item.ScolColjBoard + '\' )\"

2 个答案:

答案 0 :(得分:0)

您想要阻止什么行为? evt.preventDefault()如果你有一个表单并且该按钮是一个提交按钮并且你想阻止提交表单,则可以正常工作。然而,这些是我的许多假设......

var $vote_btn_up = $('.vote_comment_up');

$vote_btn_up.on('click', function (evt) {
  evt.preventDefault();
  console.log("log");
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<form action="http://google.de">
  <button type="submit" class="vote_comment_up">
    Button
  </button>
</form>

答案 1 :(得分:0)

我认为您创建了多个按钮:

var $vote_btn_up = $('.vote_comment_up_' + <?= $model->id ?>);

如果是,那么下一个覆盖更早......所以尝试将它们放在数组中然后你需要为每个按钮设置处理程序,如:

for(var i=0;i<=X;i++){
  $vote_btn_up[i].on('click',function(){

  });
});

或者:

$('.vote_comment_up_' + <?= $model->id ?>).each(function(){
  $(this).on('click',function(){

  });
});