jQuery ajax не работает с модальностью подтверждения JS - PullRequest
2 голосов
/ 07 июня 2011

Когда пользователь нажимает Удалить это сообщение появляется модальное окно с вопросом, уверен ли пользователь.

Если все в порядке, AJAX работает как обычно.Но если пользователь нажимает кнопку Отмена, действие удаления также происходит.

Я пробовал return false в нескольких частях этого кода AJAX, но он полностью блокирует запрос AJAX.

Я хотел бы добиться правильного поведения без использования дополнительных плагинов (например, диалоговое окно) - у кого-нибудь есть предложения?Спасибо!

AJAX

$('.posts_delete').live('click', function(e){
    e.preventDefault();

    var id = $(this).attr('id');
            var last_seg = id.substr(id.lastIndexOf('_') + 1);
            var link = 'chat/posts_delete/' + last_seg;

    $.ajax({
        url: link,
        dataType: "html",
        beforeSend: function(){
              confirmDeletePost();
//        return false;

            },          
        success: function() {
            $('#chat_thread').load('chat/posts_ajax/<?php echo $page_id; ?>');
            $('#posts_form input').val('');
        }
    });
});

JS

function confirmDeletePost() {
    return confirm("This post will be removed and you can't undo this action. Are you sure you want to delete?");
}

Ответы [ 3 ]

3 голосов
/ 07 июня 2011

отметьте это http://jsfiddle.net/jansian/wupmq/

Надеюсь, это поможет. :)

2 голосов
/ 07 июня 2011

Вам необходимо вернуть результат confirm - return false, если пользователь отменяет.

Было бы проще использовать if для отправки запроса только тогда, когда пользователь нажимает OKво-первых.

1 голос
/ 07 июня 2011

Это должно работать (внимание! Не проверено):

$('.posts_delete').live('click', function(e){
    e.preventDefault();

    if (confirm("This post will be removed and you can't undo this action. Are you sure you want to delete?")){
        var id = $(this).attr('id');
        var last_seg = id.substr(id.lastIndexOf('_') + 1);
        var link = 'chat/posts_delete/' + last_seg;

        $.ajax({
            url: link,
            dataType: "html",
            beforeSend: function(){
                  confirmDeletePost();
    //        return false;

                },          
            success: function() {
                $('#chat_thread').load('chat/posts_ajax/<?php echo $page_id; ?>');
                $('#posts_form input').val('');
            }
        });
    }
});
...