你好,我有这个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
,在这种情况下,这可能是提交表单。