Segue o código da forma que eu resolvi a situação
// Classe HttpService com o método post
class HttpService{
post(url, dado){
return new Promise((resolve, reject) => {
let xhr = new XMLHttpRequest();
xhr.open('POST', url, true);
xhr.setRequestHeader("Content-type", "application/json");
xhr.onreadystatechange = () => {
/*
no final eh recebido 3 alerts, pois o estado fica 2, 3 e 4
(1: requisicao recebida, 2: processando requisicao, 3: requisicao concluida)
*/
if(xhr.readyState == 4){
if(xhr.status == 200){
console.log(`Certo: ${xhr.readyState}`)
resolve(JSON.parse(xhr.responseText));
}
} else if(xhr.status != 200){
console.log(`errado: ${xhr.readyState}`)
reject(xhr.responseText);
}
}
xhr.send(JSON.stringify(dado));
});
}
}
// Script no arquivo post.html
function sendPost(event) {
event.preventDefault();
console.log("Enviando post");
//aqui você deve ler os dados do formulário
//construir o json
//enviar o XMLHttpRequest
let $ = document.querySelector.bind(document);
inputData = $('#data');
inpuntQuantidade = $('#quantidade');
inputValor = $('#valor');
inputForm = $('.form');
let negociacao = {
data: inputData.value,
quantidade: inpuntQuantidade.value,
valor: inputValor.value
};
let http = new HttpService();
http.post('/negociacoes', negociacao).then(() => {
alert("Negociação enviada com sucesso");
inputForm.reset();
inputData.focus();
}).catch(erro => {
console.log(erro);
alert(`Não foi possivel enviar a negociação: ${erro}`);
});
}