0
標題可能有點模糊,對此感到遺憾,請允許我解釋一下。jQuery get()請求在提交新數據之前檢索數據
我有一個users_status_likes
表與後續列:ID,USER_ID,STATUS_ID
的想法很簡單,當用戶點擊的狀態類似按鈕,得到的數據與記錄在提交給數據庫user_id
和status_id
的狀態。
現在,我試圖做一個get()
請求來檢索一個狀態的喜歡數量。問題是,獲取請求正在檢索新狀態添加之前的狀態數量。
例如,有有1類似狀況,但後來我點擊喜歡按鈕,所以現在它有2所喜歡的,有2個表中的行爲相同status_id
但每個都有不同的user_id
。當我點擊像按鈕時,控制檯說count 1
,但它確實應該是count 2
,因爲我只是喜歡狀態和數據已提交到表。
我使用Laravel 5.2,所以讓我張貼的路線開始
Route::get('likestatusCount/{id}', '[email protected]');
的getlikesCounter()
方法FeedController
public function getlikesCounter($id) {
$status = Status::find($id);
return Response::json(['count' => StatusLikes::where('status_id', $status->id)->count()]);
}
和視圖
{!! Form::open(['action' => '[email protected]', '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);
});
});
AJAX調用是異步的,所以如果你依賴響應是可用於其他AJAX調用,你需要將它們放在回調,成功()或錯誤()函數 – otherstark
如果你關心性能和合理使用資源,那麼你應該返回數字_in response_到剛剛創建一個新的POST請求。 – CBroe