我在同一頁面上有一個登錄和註冊表單,我使用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