jQuery ajax无法使用JS确认模式

时间:2011-06-07 01:23:38

标签: jquery ajax modal-dialog

当用户点击 删除此帖子 时会弹出一个模式,询问用户是否确定。

如果OK,AJAX正常进行。但是如果用户点击取消,也会发生删除操作。

我在这个AJAX代码的几个部分尝试了return false,但它完全阻止了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 个答案:

答案 0 :(得分:3)

检查此http://jsfiddle.net/jansian/wupmq/

希望它有所帮助。 :)

答案 1 :(得分:2)

如果用户取消,您需要返回confirm的结果 - 返回false

如果用户首先单击“确定”,则使用if仅发送请求会更简单。

答案 2 :(得分:1)

这应该有用(注意!未经测试):

$('.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('');
            }
        });
    }
});