未调用回调函数


Callback function not invoked

你好,我有这个jQuery:

    $("#registerButton").click(function(){
    var email = $("#registerForm input[type='email']").val();
    var username = $("#registerForm input[type='text']").val();
    var password = $("#registerForm input[type='password']").val();
    if((!$.trim(email)) || (!$.trim(username)) || (!$.trim(password)))
        return false;
    $("#login").modal('hide');
    $("#login").on('hidden.bs.modal', function(){
        $.ajax({
            type: 'post',
            url: '?a=register',
            data: {
                "email" : email,
                "username" : username,
                "password" : password
            },
            success: function(){
                $("#test").html("Testing callback function");
            }
        });
    });
});

这是处理程序请求的控制器文件(index.php(的一部分:

        case "register":
        $email = htmlspecialchars($_POST["email"]);
        $username = htmlspecialchars($_POST["username"]);
        $password = htmlspecialchars($_POST["password"]);
        insertUser($email, $username, $password);
        break;

我的问题是没有调用回调函数。其他一切正常。另一个奇怪的事情是 url 字符串从 www.domain.com 更改为 www.domail.com/?即使请求是帖子类型。我做错了什么?

当您单击按钮时,听起来您正在提交表单,尽管有代码也运行,但这种情况还是会发生。 试试这个...

$("#registerButton").click(function(e){
    e.preventDefault();
    var email = $("#registerForm input[type='email']").val();
    var username = $("#registerForm input[type='text']").val();
    var password = $("#registerForm input[type='password']").val();
    if((!$.trim(email)) || (!$.trim(username)) || (!$.trim(password)))
        return false;
    $("#login").modal('hide');
    $("#login").on('hidden.bs.modal', function(){
        $.ajax({
            type: 'post',
            url: '?a=register',
            data: {
                "email" : email,
                "username" : username,
                "password" : password
            },
            success: function(){
                $("#test").html("Testing callback function");
            }
        });
    });
});

通过在单击事件处理程序中添加e作为参数并添加e.preventDefault(),您可以停止默认操作 #registerButton ,在这种情况下,这可能是提交表单。