我在同一页面上有一个登录和注册表单,我使用jQuery隐藏,因此一次只有一个表单处于活动状态。当我注册表单处于活动状态时,请填写电子邮件字段,其中包含与我的PHP if-statement不匹配的电子邮件,然后按提交,页面将刷新并激活登录表单。无法让Ajax以我想要的方式使用PHP
我想让页面执行的是运行PHP脚本,当PHP if语句失败时,它将阻止刷新页面,然后打印位于PHP else语句中的消息。
的代码看起来是这样的:
PHP:
if(isset($_POST['register'])) {
$email = strip_tags($_POST['email']);
$password = strip_tags($_POST['password']);
$request = $_POST['request'];
$email = $DBcon->real_escape_string($email);
$password = $DBcon->real_escape_string($password);
$email = $_POST['email'];
$password = $_POST['password'];
$hashed_password = password_hash($password, PASSWORD_DEFAULT);
$check_email = $DBcon->query("SELECT email FROM members WHERE email='$email'");
$count = $check_email->num_rows;
if ($count==0) {
if (preg_match('/^[a-z]{6}+[0-9]{2}[email protected]+$/i', $email)) {
$query = "INSERT INTO members(email, password) VALUES('$email', '$hashed_password')";
$result = $DBcon->query($query);
header("Location: home.php");
die();
} else {
echo "You must provide a valid student email!";
}
} else{
echo "Email already taken!";
}
}
$DBcon->close();
的jQuery:
$(document).ready(function() {
var request = $(this).serialize();
$("#registerform").on('submit', function (event) {
event.preventDefault();
$.ajax({
type: 'POST',
url: 'registration.php',
data: request,
success: function(){
$(this).submit();
console.log("test");
},
error: function() {
event.preventDefault();
alert("fail");
}
});
});
});
将'var request = $(this).serialize();'放入提交函数中。 – DrKey
我试过这个,但是我得到这个错误:“未定义的索引:request in ....”引用我的“$ request = $ _POST ['request'];”在我的PHP。当我运行“print_r($ _ POST);”请求的值实际上正在打印.. – Kristoffer