2017-12-26 6 views
0

like/dislike at same time처럼 나는이 아약스대로의 기능과 댓글을 싫어하지만,이 기능을, 내가 좋아하는 수 있으며, 동시에 싫어하는이 기능

/싫어한다. 예를 들어 내가 좋아하는 의견을 원할 때 나는 그것을 좋아하지 않는다면 나는 그것을 좋아하지 않는다. 여기

는 등 (upvote에)에 대한 코드 싫어 (downvote)

까지 투표

$(".tup").click(function (e) { 

    e.preventDefault(); 
    var reviewId = $(this).data('id'); 

    $.ajax({ 
      headers: { 
       'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content') 
      }, 
      url: document.location.origin + '/review/' + reviewId + '/upvote', 
      type: 'POST', 
      data: { 
       review_id: reviewId 
      }, 
      dataType: 'json' 
     }) 
     .done(function (data) { 

      if (data == true) { 
       $('.tup[data-id=' + reviewId + '] .vn').text(function (i, oldVal) 
       { 
        return parseInt(oldVal, 10) + 1; 
       }); 
      } else { 
       snackybar.timer("Already Voted", 3000); 
      } 

     }) 
     .fail(function (jqXHR, textStatus) { 
      console.log("Request failed: " + textStatus); 
     }); 
}); 

// down votes 

$(".tdown").click(function (e) { 
    e.preventDefault(); 
    var reviewId = $(this).data('id'); 

    $.ajax({ 
      headers: { 
       'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content') 
      }, 
      url: document.location.origin + '/review/' + reviewId + '/downvote', 
      type: 'POST', 
      data: { 
       review_id: reviewId 
      }, 
      dataType: 'json' 
     }) 
     .done(function (data) { 
      if (data == true) { 
       $('.tdown[data-id=' + reviewId + '] .vn').text(function (i, oldVal) { 
        return parseInt(oldVal, 10) + 1; 
       }); 
      } else { 
       snackybar.timer("Already Voted", 3000); 
      } 
     }) 
     .fail(function (jqXHR, textStatus) { 
      console.log("Request failed: " + textStatus); 
     }); 
}); 

입니다 그리고 이것은 문제가 있다는 것입니다 컨트롤러의 코드

public function upvote($id) { 
    if(!UpDownVote::where('review_id',$id)->where('upvote',1)->first()) { 
     Review::findOrFail($id)->increment('upvote'); 
     UpDownVote::create([ 
      'user_id' => Auth::user()->id, 
      'review_id' => $id, 
      'upvote' => 1 
     ]); 
     return 'true'; 
    } else { 
     return 'false'; 
    } 
} 

public function downvote($id) { 
    if(!UpDownVote::where('review_id',$id)->where('downvote',1)->first()) { 
     Review::findOrFail($id)->increment('downvote'); 
     UpDownVote::create([ 
      'user_id' => Auth::user()->id, 
      'review_id' => $id, 
      'downvote' => 1 
     ]); 
     return 'true'; 
    } else { 
     return 'false'; 
    } 
} 
+0

직면 한 오류는 무엇입니까? –

+0

나는이 그 일을하고 나는 그것을 (아래로 눌러 엄지 손가락을) 싫어하는 경우 그 후 그것뿐만 아니라 의미 나는 당신의 HTML 코드를 너무 게시하시기 바랍니다 좋아하고 동시에 –

+0

에 댓글을 싫어하는 수하고있다 코멘트를 좋아하고있을 때 –

답변

0

입니다 Ajax 호출은 비동기식입니다. 따라서 tup 버튼을 클릭 한 다음 tdown 버튼을 클릭하면 두 번째 버튼을 클릭 할 때 이미 치료가 완료되지 않은 것입니다.

당신은 서버의 응답을 기다리는 때 클릭의 가능성을 사용할 수 있습니다.

var isClicking = false; 
$(".tup").click(function (e) { 
if(isClicking){ 
    return; 
} 
isClicking = true; 
e.preventDefault(); 
var reviewId = $(this).data('id'); 

$.ajax({ 
     headers: { 
      'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content') 
     }, 
     url: document.location.origin + '/review/' + reviewId + '/upvote', 
     type: 'POST', 
     data: { 
      review_id: reviewId 
     }, 
     dataType: 'json' 
    }) 
    .done(function (data) { 

     if (data == true) { 
      $('.tup[data-id=' + reviewId + '] .vn').text(function (i, oldVal) 
      { 
       return parseInt(oldVal, 10) + 1; 
      }); 
     } else { 
      snackybar.timer("Already Voted", 3000); 
     } 

    }) 
    .fail(function (jqXHR, textStatus) { 
     console.log("Request failed: " + textStatus); 
    }).always(function(){ 
    isClicking=false; 
    }); 
}); 

// down votes 




$(".tdown").click(function (e) { 
e.preventDefault(); 
if(isClicking){ 
    return; 
} 
isClicking = true; 
var reviewId = $(this).data('id'); 

$.ajax({ 
     headers: { 
      'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content') 
     }, 
     url: document.location.origin + '/review/' + reviewId + '/downvote', 
     type: 'POST', 
     data: { 
      review_id: reviewId 
     }, 
     dataType: 'json' 
    }) 
    .done(function (data) { 
     if (data == true) { 
      $('.tdown[data-id=' + reviewId + '] .vn').text(function (i, oldVal) { 
       return parseInt(oldVal, 10) + 1; 
      }); 
     } else { 
      snackybar.timer("Already Voted", 3000); 
     } 
    }) 
    .fail(function (jqXHR, textStatus) { 
     console.log("Request failed: " + textStatus); 
    }).always(function(){ 
    isClicking=false; 
    }); 
}); 
+0

남성 없음 여전히 동일한 문제 –

관련 문제