Показать сообщение отдельно
  #7 (permalink)  
Старый 22.08.2021, 15:41
Новичок на форуме
Отправить личное сообщение для zloy_ej Посмотреть профиль Найти все сообщения от zloy_ej
 
Регистрация: 18.08.2021
Сообщений: 4

Решил сделать так:
'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))
}

то запрос все равно отправляется. Почему так происходит, и как надо?
Ответить с цитированием