当我点击我的删除链接以通过jQuery ajax删除用户时,我总是在我的网址末尾变为“#”

时间:2014-06-19 01:57:37

标签: jquery ajax

我有一个用户列表,当我点击我的“删除”链接时我通过ajax删除了我的用户。 它工作正常,但我遇到了问题。

我在tihs目录中有我的用户列表:htttp://localhost/admin/dashboard.php? NAV =用户/索引

当我点击删除链接,然后在我的对话框上点击“是”,我的用户被删除但我的网址末尾有一个“#”,因此我有一些冲突。

像这样:htttp://localhost/admin/dashboard.php? NAV =用户/索引#

你知道为什么会发生这种情况吗?

这是我的jQuery:

$('.users').on('click','.j_userdelete',function(){
    var delid = $(this).attr('id');
    $('.users li[id="'+ delid +'"]').css('background','red');
    //when I click in my delete link I open my confirm dialog
    //my .confirm_dialog is only a background and .delete is div where I have yes and no buttons 
    $('.confirm_dialog').fadeIn("slow",function(){
        $('.delete').fadeIn("slow");
    });
    //If I click in my "no" link I close my dialog
    $("a#no").click(function(){
        $('.delete').fadeOut("slow",function(){
            $('.delete_dialog').fadeOut("slow"); 
        });
        $('.usuarios .users li[id="'+ delid +'"]').css('background','none');
    });

    //if I click in my "yes" link I have my post for delete
    $("a#yes").click(function(){

        $.post(url,{
            action:'users_del',
            idUser:delid
        },function(){
            window.setTimeout(function(){
                $('.users li[id="'+ delid +'"]').fadeOut("slow");
        },500);
        //and then I close my dialog
        $('.delete').fadeOut("fast",function(){
            $('.delete_dialog').fadeOut("fast"); 
        });
    });
});
return false;
})

2 个答案:

答案 0 :(得分:3)

问题是,a标记的默认行为是触发重定向。这就是为什么您使用#后缀重定向到当前网址的原因。要绕过此默认行为,请在调用event.preventDefault()之前放置ajax post,如下所示:

//if I click in my "yes" link I have my post for delete
$("a#yes").click(function(event){
    event.preventDefault();
    $.post(url,{
        action:'users_del',
        idUser:delid
    },function(){
        window.setTimeout(function(){
            $('.users li[id="'+ delid +'"]').fadeOut("slow");
    },500);
    //and then I close my dialog
    $('.delete').fadeOut("fast",function(){
        $('.delete_dialog').fadeOut("fast"); 
    });
});

答案 1 :(得分:2)

如果你想从HTML本身做到这一点。 简单地说就是

<a href="javascript:void(0);"></a>

通过这种方式,您无需为此修复任何JavaScript。