Решил сделать так:
'use strict';
const requestURL = '/get_building';
let frm = document.forms[0];
frm.onsubmit = async function(event) {
let body = 'building_name=' + frm.building_name.value; //получаем 'building_name=123', Если ввели в форму 123
let answer = AJAX("POST", requestURL, body)
event.preventDefault();
answer.then(data => {
if(data.resp=='New'){
console.log('Новое здание');
}
else {
console.log('Старое здание');
}
})
.catch(err => console.log(err))
}
function AJAX(method, url, body = null) {
return new Promise((resolve, reject) => {
const xhr = new XMLHttpRequest()
xhr.open(method, url);
xhr.responseType = 'json';
xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded')
xhr.onload = () => {
if (xhr.status >= 400) {
reject(xhr.response)
} else {
resolve(xhr.response)
}
}
xhr.onerror = () => {
reject(xhr.response)
}
xhr.send(body)
})
}
Запрос отправляется и приходит ответ. Мы его выводим в консоль. То, что было введено в форму сравнивается с тем, что есть в БД.
Не могу сделать так, что бы если запись уже есть и срабатывает условие
if(data.resp=='New'){
console.log('Новое здание');
}
запрос отправлялся. Сейчас он блокируется вот этим:
event.preventDefault();
Если сделать вот так:
const requestURL = '/get_building';
let frm = document.forms[0];
frm.onsubmit = async function(event) {
let body = 'building_name=' + frm.building_name.value; //получаем 'building_name=123', Если ввели в форму 123
let answer = AJAX("POST", requestURL, body)
answer.then(data => {
if(data.resp=='New'){
console.log('Новое здание');
}
else {
return event.preventDefault();
console.log('Старое здание');
}
})
.catch(err => console.log(err))
}
то запрос все равно отправляется. Почему так происходит, и как надо?