@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);
    }
}
  • Вопрос задан
  • 81 просмотр
Решения вопроса 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';
            }
}
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы
COSMOS Москва
от 120 000 до 150 000 руб.
от 40 000 руб.
Remarked Санкт-Петербург
от 60 000 до 120 000 руб.
19 марта 2019, в 21:07
9000 руб./за проект
19 марта 2019, в 21:06
3000 руб./за проект