您好我有这个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/?即使请求是post类型。我做错了什么?
答案 0 :(得分:2)
听起来您在单击按钮时提交表单,尽管代码也会运行,但仍会发生。试试这个......
$("#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
的默认操作,在这种情况下可能会提交表单。