Answer the question
In order to leave comments, you need to log in
How to send data to server with Ajax in pure JavaScript?
I have already implemented this data send in jQuery with the same code in PHP. But it's impossible to do it on pure JS, please tell me.
PS I know that getting data from inputs is not correct, I could not get data from them without refreshing the page.
<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);
Answer the question
In order to leave comments, you need to log in
Send data like this:
// Ждем когда элементы на странице прогрузятся:
document.addEventListener('DOMContentLoaded', function() {
// Вешаем на кпопку обработчик клика, чтобы при каждом клике
// сразу запускалась функц я dataSend отвечающая за отправку данных:
document.querySelector('.button').addEventListener('click', dataSend);
});
// Функция для отправки данных на сервер:
async function dataSend() {
// Получаем данные с нужных нам полей в переменные:
var loginValue = document.querySelector('.login').value
var emailValue = document.querySelector('.email').value
var passwordValue = document.querySelector('.password').value
var conf_passwordValue = document.querySelector('.conf_password').value
// Создаем объект с данными:
var data = {
'login': loginValue,
'email': emailValue,
'password': passwordValue,
'conf_password': conf_passwordValue
}
// Конвертируем объект в JSON:
var json = JSON.stringify(data);
// Отправялеям полученный JSON на сервер обычным POST-запросом:
var response = await (await fetch('https://yousite.ru/handler.php', {
'method': 'POST',
'headers': {
'Content-Type': 'application/json; charset=utf-8'
},
'body': json
})).text();
// Выводим ответ сервера в консоли:
console.log('Ответ сервера:');
console.log(response);
}
<?php
// Включим показ ошибок:
ini_set('error_reporting', E_ALL);
ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
// Считываем полученный JSON:
$json = file_get_contents('php://input');
// Раскодируем JSON в массив:
$array = json_decode($json, true);
// Выведем массив, чтобы посмотиеть, что в нем:
header('Content-Type: text/plain; charset=UTF-8'); // Указыавем браузеру, что ответ будет обычным текстом
echo "Из браузера получены следующие данные:\n"; // Выведем текст-предупреждение
print_r($array); // Выведем все, что находится в массиве
Didn't find what you were looking for?
Ask your questionAsk a Question
731 491 924 answers to any question