@Iossarian

В чем ошибка аjax удаления комментария?

Изучаю ajax и решил переделать на своем тестовом сайте удаление комментариев. Собственно данный код удаляет комментарий только после перезагрузки страницы. Подскажите, где моя ошибка? Может быть скрипт удаления не получает id коммента до перезагрузки?

<input type="hidden" value="<?=$comment['id'];?>" name="comId">
<button class="btn btn-sm btn-outline-light"  id="remove_<?=$comment['id']?>">Удалить</button>


$(".delete .btn").on('click', function(){
        var commentId = this.id.slice(7); 

        $.post("../delete.php", {id : commentId}, function( serverResponse ){
            if( serverResponse === 'ok' ) { 
                $this.hide();
            }
        })
    })


if($_SERVER[ 'REQUEST_METHOD' ] === 'POST') {
if( is_numeric($_POST['id']) ) {
    $commentId = (int)$_POST['id'];
    $sqlDel = 'DELETE FROM comments WHERE id = ' . $commentId;
    $result = $db->query($sqlDel);
    }
}
  • Вопрос задан
  • 89 просмотров
Решения вопроса 1
@Iossarian Автор вопроса
Проблема была в классах кнопки. То ли из-за пробелов в нем, то ли из-за неточного указания класса.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
@jasper-blondin
Говоря "удаляет комментарий только после перезагрузки страницы" Вы имеете ввиду, что блок комментария пропадает со страницы только после перезагрузки?
Если так, то дело в следующем.
Замените код:
var commentId = this.id.slice(7); 

        $.post("../delete.php", {id : commentId}, function( serverResponse ){
            if( serverResponse === 'ok' ) { 
                $this.hide();
            }
        })

на следующий код:
var $this = $(this);
        var commentId = this.id.slice(7); 

        $.post("../delete.php", {id : commentId}, function( serverResponse ){
            if( serverResponse === 'ok' ) { 
                $this.hide();
            }
        })

У Вас $this не определен.
Ответ написан
@DronTat
<div class="comments_<?= $comment['id']?>">
//тут код
</div>

$('body').on('click', '.btn', function () {
        var commentId = this.id.slice(7);
        $.ajax({
            type: "POST",
            url: "/export/post",
            data: {
                id: commentId
            },
            success: function (data) {
                if(data === 'ok'){
                    $(".comments_" + commentId).remove();
                } else {
                    console.log('Все плохо');
                }
            }
        })
    });

Сервер:
if($_SERVER[ 'REQUEST_METHOD' ] === 'POST') {
            if( $id = is_numeric($_POST['id']) ) {
                return 'ok';
            }
}
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы