@VladimirKrasnov

Почему не обновляется счетчик лайков Ajax?

Здравствуйте.
В моём блоге есть возможность лайкать посты. Для этого в каждом посте есть такая форма
<form action="{{route('likePost', ['id' => Auth::user()->id, 'postId' => $post->id])}}" method="POST">
    @csrf @method('PATCH')
    <button data-id="{{$post->id}}" id="likebtn" type="submit" class="button-delete-post-2">
        <img src="{{asset('img/footer/like.png')}}" class="img-fluid" width="25">
        <small class="text-muted mr-4">{{$post->likepost}}</small>
    </button>
    <input type="hidden" value="{{Auth::user()->id}}" id="user_id">
</form>


Написал скрипт, который должен(ну я так думаю) при нажатии на лайк, без перезагрузки страницы его обновлять(++ или --).

$.ajaxSetup({
        headers: {
            'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
        }
    });
    
    $('.infinite-scroll').on('click', '#likebtn', function(e) {
        e.preventDefault();

        var id = $(this).data('id'); //id поста
        var token = $("meta[name='csrf-token']").attr("content");
        var user_id = $("#user_id").val(); //id пользователя

        $.ajax({
            url: "id"+user_id+"/"+id+"/like",
            type: "PATCH",
            data: {_token: token, id: id, user_id: user_id},
            success: function(data) {
                $("#likebtn"+id).html($(data).find("#likebtn"+id).html());
            },
            error: function() {
                alert('error');
            }
        });
    });


В итоге при нажатии на лайк, ничего не происходит. Для того, что бы счетчик лайков обновился, приходится перезагружать страницу. Консоль тоже никаких ошибок не выдаёт. Подозреваю, что мог накосячить в блоке success, но это не точно. Хотя, если написать $("#likebtn"+id).hide() в принципе всё срабатывает и элемент скрывается.
  • Вопрос задан
  • 54 просмотра
Пригласить эксперта
Ответы на вопрос 1
Benzin102
@Benzin102
Shitcoder
$("#likebtn"+id) - это у тебя в вёрсте отсутствует. Мб так
$("#likebtn").html($(data).find("#likebtn").html());
?

success: function(data) {
                $("#likebtn"+id).html($(data).find("#likebtn"+id).html());
            },

Что в data? И зачем в принципе возвращать html, если тебе цифра нужна
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы