jQuery get()请求在提交新数据之前检索数据

jQuery get() request retrieves data before the new data has been submitted

本文关键字:数据 检索 提交 get 请求 jQuery 新数据      更新时间:2023-09-26

标题可能有点模糊,很抱歉,请允许我解释一下。

我有一个users_status_likes表,其中包含以下列:id、user_id、status_id

这个想法很简单,当用户单击状态的类似按钮时,数据将被提交到数据库,其中包含状态的登录user_idstatus_id

现在,我正在尝试执行get()请求,以检索状态的点赞数。问题是,get请求正在检索添加新点赞之前状态的点赞数。

例如,有一个状态有1个赞,但我单击了赞按钮,所以现在它有2个赞,表中有2行用于相同的status_id,但每个都有不同的user_id。当我点击点赞按钮时,控制台显示count 1,但实际上应该是count 2,因为我只是喜欢状态和数据已经提交到表中。

我正在使用Laravel 5.2,所以让我从发布路线开始

Route::get('likestatusCount/{id}', 'FeedController@getlikesCounter');

FeedController 中的getlikesCounter()方法

public function getlikesCounter($id) {
    $status = Status::find($id);
    return Response::json(['count' => StatusLikes::where('status_id', $status->id)->count()]);
}

以及视图内的表单

{!! Form::open(['action' => 'FeedController@likeStatus', 'id' => 'like_form', 'class' => 'likeform']) !!}
          <button type="submit" class="btn btn-info btn-xs like" data-user="{{ Auth::user()->id }}" data-status="{{ $status->id }}" id="like-status">
          <i class="fa fa-thumbs-up"></i> <span class="like-button-text">Like</span> <span class="like-button-counter">({{ $likes_count }})</span>
          </button>
{!! Form::close() !!}

javascript

$('.likeform').submit(function(e) {
    e.preventDefault();
    var submitBtn = $(this).find('.like');
    var likeText = $(this).find('span.like-button-text');
    var likeCounter = $(this).find('span.like-button-counter');
    var status_id = submitBtn.data('status');
    var user_id = submitBtn.data('user');
    var token = $('input[name=_token]').val();
    $.ajaxSetup({
        headers: {
            'X-CSRF-TOKEN': token
        }
    });
    $.ajax({
        url: 'http://localhost/socialnet/public/likeStatus',
        method: 'POST',
        cache: false,
        data: { like_status: status_id, user_id: user_id, _token: token },
        success: function(data) {
            submitBtn.removeClass('btn-info').addClass('btn-danger');
            submitBtn.find($(".fa")).removeClass('fa-thumbs-up').addClass('fa-thumbs-down');
            likeText.text('Dislike');
            console.log(data);
        },
        error: function() {
            console.log('error');
        }
    });
    // data.count returns the count before the new like has been submitted
    $.get("http://localhost/socialnet/public/likestatusCount/" + status_id, function(data) {
        likeCounter.text(data.count);
        console.log(data.count);
    });
});

移动此:

$.get("http://localhost/socialnet/public/likestatusCount/" + status_id, function(data) {
    likeCounter.text(data.count);
    console.log(data.count);
});

内部

success: function(data){
}