Я создаю регистрационную форму пользователя для своего сайта и использую ajax для обработки процесса на стороне сервера. Моя проблема - обработка ответа от моего php кода. После выполнения на стороне сервера возможными ответами могут быть успех (зарегистрированный пользователь), ошибка подключения к базе данных, ошибка пустого поля (полей) или сбой при выполнении запроса sql (входные данные уже существуют в уникальном sql поле, например, имя пользователя, адрес электронной почты). Я хочу знать, как я могу получить правильный ответ для каждого из них, чтобы отобразить сообщение для пользователя. Что у меня есть:
JS
$.ajax({
type: "post",
url: "userRegistration.php",
data: {
firstname: firstname,
surname: surname,
email: email,
usernameSignup: username,
passwordSignup: password,
passwordConfirm: passwordConfirm
},
dataType: "json",
success: function(data) {
console.log(data.status);
if (data.status == "success") {
console.log("Registration was successful");
//Do success stuff
} else if (data.status == "error") {
console.log("Didn't Execute Query");
// Do error stuff
} else if (data.status == "connectionError") {
console.log("Failed to connect to database");
// Do error stuff
} else {
console.log("Empty fields");
// Do error stuff
}
});
PHP
<?php
// try catch statement to connect to database through getConnection() function in dbConn.php file
try {
// try to connect to database
require_once("dbConn.php");
$dbConn = getConnection();
} catch (Exception $e) {
// database connect error
//echo "A problem occured: " . $e->getMessage();
$response_array["status"] = "connectionError";
}
// Form validation for POST method to check fields are not empty
if (!empty($_POST['firstname'])) {
$firstname = filter_has_var(INPUT_POST, 'firstname') ? $_POST['firstname'] : null;
$firstname = trim($firstname);
} else {
echo "A first name must be entered.<br/>";
}
// Same validation for other fields
// If all the previous steps are valid and variables are set, try to run the SQL query to make new account.
if (!empty($firstname) && !empty($surname) && !empty($email) && !empty($usernameSignup) && !empty($passwordHash)) {
try {
$sqlQuery = "INSERT INTO GH_users (firstname, surname, email, accountConfirmed, username, passwordHash)
VALUES ('$firstname', '$surname', '$email', 0, '$usernameSignup', '$passwordHash')";
$execute = $dbConn->exec($sqlQuery);
$response_array["status"] = "success";
} catch (PDOException $e) {
// failure to execute error
//echo $sqlQuery . "<br>" . $e->getMessage();
$response_array["status"] = "error";
}
} else {
// empty field(s) error
$response_array["status"] = "empty";
}
// send the response
header("Content-type: application/json");
echo json_encode($response_array);
exit;
Обработчик статуса успеха работает правильно, но я не могу получить обработчик состояния ошибки, когда пытаюсь передать данные в базу данных, когда она уже существует, или пустой обработчик состояния для пустых полей. Я также не знаю, как проверить обработчик состояния connectionError. Любые советы / предложения по обработке этих ответов будут оценены.