Ir ao conteúdo

Javascript Como armazenar os dados retornados do servidor? (Node.js + express)


Ir à solução Resolvido por Reberth Siqueira,

Posts recomendados

Postado

Olá!!

 

 

Finalmente iniciei com NodeJS e sinceramente, eu to totalmente perdido kkkk Já vi algumas video aulas e ainda estou vendo. Mas eu não tenho paciencia.... eu gosto de praticar. Então, já entendi como são feitas as requisições POST e GET, e agora estou tentando aprender como manipular os dados que são retornados do servidor. O que eu estou fazendo é:

 

 

(seguind a ordem abaixo)

 

Client-side: Através do POST estou mandando os dados {tipo=este 

Server-side: Recebe o dado e o retorna em formato JSON {"tipo":"teste"} (O MEU PROBLEMA VEM A SEGUIR)

Client-side: Ao receber o responseText, armazezar a resposta em uma variavel global chamada teste e dar um console.log(teste)

 

 

Atualmente só tá sendo printado undefined no teste. Já tentei  utilizar .slice() mas mesmo assim não deu certo ;|

 

o que eu to fazendo de errado?

 

 

 

 

Código CLIENTE-SIDE

let teste; // AQUI QUERO QUE RECEBA O VALOR DO RESPONSETEXT

const post = () => {

     event.preventDefault();
    let ajax = new XMLHttpRequest();
    let params = "tipo=teste";

    ajax.open('POST', 'http://localhost:3000/');

    ajax.setRequestHeader('Content-type', 'application/x-www-form-urlencoded');

    ajax.onreadystatechange = () => {

        let resposta = ajax.responseText;

        teste = resposta.slice();

    }

    ajax.send(params);

}

window.addEventListiner('onload', () => {


    post();

    console.log(teste); //UNDEFINED
});

 

Código Server-side

let express = require('express');
let bodyParser = require('body-parser');
let cors = require('cors');

let app = express();

let objet;


let urlEnconded = bodyParser.urlencoded({ extended: false });

app.use(function (req, res, next) {
    res.header("Access-Control-Allow-Origin", "*");
    res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept");
    next();
});

app.use(cors());

app.post('/', urlEnconded, (req, res) => {

    objet = {
        tipo: req.body.tipo
    }

    res.send(objet);



})


app.listen(3000, () => {
    console.log('hey');
});

 

  • Solução
Postado

 

Já foi resolvido!

 

Acho que por ser uma função assincrona e não bloqueante, o javascript, executou muito mais rápido o console.log depois do post do que a requisição no servidor. Por isso estava dando undefined.

 

Eu coloquei um setTimeout de 1 segundo para executar esse console log e verifiquei que os dados estavam realmente sendo armazenados na variavel.

  • Curtir 1

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...