我的网站注册脚本如下。当用户点击注册时,它会通过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
,这样无论触发事件是什么,你都可以捕捉到表单提交,用户可以通过按回车键提交表单,我一直都这样做,我打赌你也会这样做。