1

我的网站注册脚本如下。当用户点击注册时,它通过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>
4

1 回答 1

3

我发现您的代码存在 2 个问题:

第一个问题

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

所以:

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

应该成为

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

从方法文档:

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

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


第二个问题(虽然不是答案)

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

于 2013-08-24T18:36:00.603 回答