使用PHP的AJAX注册表单失败


AJAX signup form with PHP failing

我的网站注册脚本如下。当用户点击注册时,它会通过AJAX将所有数据发送到另一个页面,如果成功,它应该更改页面,然而,似乎我一调用该函数,页面就会用top.location.href = '/';重新加载到主页,而不是等待AJAX调用成功。

我做错了什么?我该怎么解决?

<script>
    $("#button").click(function() { 
        username = $('#loginNames').val();
        password = $('#passwords').val();
        email = $('#email').val();
        q = $('#q').val();
        a = $('#a').val();
        name = $('#i7').val();
        jQuery.ajax({
            type: "POST",
            url: "signupprocess.php",
            data: {'username':username, 'password': password, 'email': email, 'q':q, 'a':a, 'name': name},
            cache: false,
            success: function(response) {
                if(response === up) {
                top.location.href = '/';
                } else {
                    $('#response').html(response);
                }
            }
        });
        return false;
    });
</script>

我看到您的代码有两个问题:

第一个问题

您需要preventDefault(),只需将其添加到click()函数中的任何位置即可

因此:

$("#button").click(function(){  

应成为

$("#button").click(function(e){  
    e.preventDefault();

根据方法文件:

如果调用此方法,则不会触发事件的默认操作。-event.prventDefault()

因此,在您的情况下,除非添加preventDefault() ,否则您的代码不会取消默认按钮行为


第二个问题(但不是答案)

你不应该在按钮上使用click,你应该在表单上使用submit,这样无论触发事件是什么,你都可以捕捉到表单提交,用户可以通过按回车键提交表单,我一直都这样做,我打赌你也会这样做。