Я уже реализовывал эту отправку данных на jQuery с таким же кодов на PHP. Но сделать на чистом JS не получается, подскажите пожалуйста.
P.S. я знаю, что получение данных из input'ов не корректное, я не смог получить из них данные без обновления страницы.
<input class="form-control" id="login" type="text" name="login" placeholder="Login">
<input class="form-control" id="email" type="email" name="email" placeholder="Email">
<input class="form-control" id="password" type="password" name="password" placeholder="Password">
<input class="form-control" id="conf_password" type="password" name="conf_password" placeholder="Confirm password">
<button class="button form-control" id="button">Submit</button>
function sendRequest (method, url, body) {
const xhr = new XMLHttpRequest()
return new Promise(function (resolve, reject) {
xhr.open(method, url)
xhr.responseType = 'json'
xhr.setRequestHeader('Content-type', 'application/json')
xhr.onload = () => {
if (xhr.status >= 400) {
reject('Ошибка')
} else {
resolve(xhr.response)
}
}
xhr.send(JSON.stringify(body))
})
}
let btn = document.querySelector('.button ')
let loginValue = document.querySelector('.login').value
let emailValue = document.querySelector('.email').value
let passwordValue = document.querySelector('.password').value
let conf_passwordValue = document.querySelector('.conf_password').value
data = {
'login': loginValue,
'email': emailValue,
'password': passwordValue,
'conf_password': conf_passwordValue
}
sendRequest('POST', 'some.php', data)
.then(data => console.log(data))
.catch(err => console.log(err))
$data = [
'login' => $_POST['login'],
'email' => $_POST['email'],
'password'=> password_hash($data['pass'], PASSWORD_DEFAULT),
];
if ($data['pass'] != $data['conf_password']) {
http_response_code(400);
$error = [
'status' => 400,
'message' => 'Пароли не совпадают'
];
//echo json_encode($error);
$_SESSION['errorSignUp'] = 'Ваши пароли не совпадают';
return header('Location: signup');
exit();
}
$connection = new PDO("mysql:host=test2;dbname=api", "mysql", "mysql");
$sql = "INSERT INTO `posts` (`login`, `email`, `password`)
VALUES (:login, :email, :password)";
$stmt = $connection->prepare($sql);
$result = $stmt->execute($data);
print_r($result);