首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >通过一次点击更新ajax-request中的2个变量(Rails)

通过一次点击更新ajax-request中的2个变量(Rails)
EN

Stack Overflow用户
提问于 2015-12-27 04:00:03
回答 1查看 19关注 0票数 0

我向服务器发出一个ajax请求,服务器用JSON响应我。

我的js.file在成功的时候:

代码语言:javascript
复制
success: function(data){
   //was disliked
   if ($(_this).hasClass( "disliked" )){
   $(_this).removeClass("disliked").addClass("liked");
   dislike_action.text(data.post_dislikes);
   $(_this).text(data.post_likes);
 }

我来自控制器的响应:

代码语言:javascript
复制
render json: { post_likes: @post.likes_count, post_dislikes: @post.dislikes_count }

问题是,它只改变了post_dislike:

代码语言:javascript
复制
        $(_this).text(data.post_likes);

但不是两者都有:

代码语言:javascript
复制
dislike_action.text(data.post_dislikes);
$(_this).text(data.post_likes);

要查看post_dislikes的更改,我必须重新加载页面,那么问题出在哪里呢?

下面是我的完整js文件:

代码语言:javascript
复制
var dislike_action = $(".dislike_action");
var like_action = $(".like_action");

$(function(){  
  var dislikes_count = $(".dislikeAction").text();
  var likes_count = $(".likeAction").text();
  $(".likeAction").click(function(){
      var current_post_tr = $(this).parents('tr')[0];
      var _this = this
      $.ajax({
      url: 'http://localhost:3000/dashboard/' + $(current_post_tr).attr('data-post_id') +'/like',
        type: 'PUT',
        success: function(data){
          //was disliked
          if ($(_this).hasClass( "disliked" )){
            $(_this).removeClass("disliked").addClass("liked");
            dislike_action.hide();
            $(_this).text(data.post_likes);
          }//was neither liked nor disliked
          else {           
            $(_this).addClass("liked").text(data.post_likes);
          }
        },
        error: function(data){
          alert(data.responseText);
          console.log(data); 
        }
      });
    });

  $(".dislikeAction").click(function(){
      var current_post_tr = $(this).parents('tr')[0];
      var _this = this
      $.ajax({
      url: 'http://localhost:3000/dashboard/' + $(current_post_tr).attr('data-post_id') +'/dislike',
        type: 'PUT',
        success: function(data){
          //was liked
          if ($(_this).hasClass( "liked" )){
            $(_this).removeClass("liked").addClass("disliked");
            like_action.text(data.post_likes);
            $(_this).text(data.post_dislikes);
          }//was neither liked nor disliked
          else {           
            $(_this).addClass("disliked").text(data.post_dislikes);
          }
        },
        error: function(data){
          alert(data.responseText); 
          console.log(data);
        }
      });
    });

});
EN

回答 1

Stack Overflow用户

发布于 2015-12-27 05:48:14

如果看不到你的html,我就不能确定,但看起来你的问题可能是因为每个喜欢和不喜欢有两个不同的类。

您在顶部声明了这一点

代码语言:javascript
复制
var dislike_action = $(".dislike_action");
var like_action = $(".like_action");

但是后来

$(".dislikeAction")和$(".likeAction")在其他地方使用

我想如果你把上面的声明改成这个...

代码语言:javascript
复制
var dislike_action = $(".dislikeAction");
var like_action = $(".likeAction");

它可能会起作用

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34474759

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档