我正在尝试将表单数据发送到php脚本而不进行重定向。 我遇到的问题是responseText函数似乎无法可靠地工作。
注意:PHP脚本按预期工作。并且正在写入数据库等等。
AJAX代码:
$(document).ready(function(){
$('#registreer').click(function(){
$.ajax({
type: "POST",
url: "assets/PHP/registreer.php",
data: $('form').serialize(),
success: function(jqXHR, textStatus) {alert("Succes" + jqXHR.responseText);},
error: function(jqXHR, textStatus) {alert("Error" + jqXHR.responseText);}
})
});
});
PHP代码:
$conn = mysqli_connect($servername, $username, $password, $dbname);
// Check connection
if (!$conn) {
die("Connection failed: " . mysqli_connect_error());
}
if ($passwordPost != $passwordRetypePost) {
echo "Paswoorden zijn niet hetzelfde!";
} else {
if (!($stmt = $conn->prepare("SELECT * FROM `Gebruikers` WHERE `Email` = ?"))) {
echo "Prepare failed: (" . $conn->errno . ") " . $conn->error;
} else {
$stmt->bind_param("s", $emailPost);
$stmt->execute();
$stmt->bind_result($id, $email, $paswoord, $rol);
$stmt->store_result();
if ($stmt->num_rows > 0) {
echo "Email bestaat al!";
} else {
$stmt->close();
$hash = password_hash($passwordPost, PASSWORD_DEFAULT);
if (!($stmt = $conn->prepare("INSERT INTO `Gebruikers`(`Email`, `Paswoord`) VALUES (?,'$hash')"))) {
echo "Prepare failed: (" . $conn->errno . ") " . $conn->error;
}
$stmt->bind_param("s", $emailPost);
$stmt->execute();
echo 'Gelukt!';
}
}
}
$mysqli->close();
因此,出于某种原因,我能得到的唯一回应是:
echo "Email bestaat al!";
所有其他回声似乎都不适用于我的HTML页面。无论我尝试什么。
欢迎任何建议!
答案 0 :(得分:1)
您收到该消息是因为您正在检查数据库中是否已存在$emailPost
且答案是否为真。这就是您收到此消息的原因。
您是否尝试过其他电子邮件地址?
此外,在您的jQuery回调(success
和error
)中,您将始终收到“成功”的东西,因为在任何情况下,您都不会在PHP端抛出任何错误。
你最好在php中使用的每个'echo'或'die'语句中使用类似throw new Exception('Prepare failed
[...] ')
之类的内容,除非你可以正确使用{{1 }}