Ir ao conteúdo
  • Cadastre-se

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


Ir à solução Resolvido por Reberth Siqueira,

Posts recomendados

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');
});

 

Link para o comentário
Compartilhar em outros sites

  • Solução

 

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
Link para o comentário
Compartilhar em outros sites

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...