Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

180
Visualizações
Node.js redirige al usuario a otra página una vez que se ejecuta la función dentro de la solicitud POST

Tengo un código nodejs donde el usuario inicialmente está en localhost:3000/index una vez que se inicia el código, la página /index tiene un formulario, una vez que el usuario hace clic en el botón Enviar, es redirigido a otra página localhost:3000/process hay un POST solicitud (en el archivo script.js ) que envía esos datos al servidor, luego la solicitud POST en el lado del server necesita execute a function , solo una vez que se ejecuta la función (que está dentro de la solicitud POST) entonces me gustaría que el usuario ser redirigido a otra página localhost:3000/done

res.render('done') y res.redirect('/done') al final de la solicitud de publicación no funcionan.

He intentado muchas cosas, pero aún no puedo ser redirigido una vez que se ejecuta la función dentro de la solicitud de post .

la estructura de mi proyecto es así:

 public folder structure: js_folder: script.js routes folder: index.js process.js done.js views folder: index.ejs process.ejs done.ejs app.js file ****** ******* ******* *** ****

así es como se ve el archivo process.js:

 const express = require('express'); const router = express.Router(); /*once the user clicks on submit button (in the localhost:3000/index page) he is redirected */ router.get('/process', async (req, res) => { // this process.ejs is showing 'please wait until function is executed' res.render('process') }); router.post('/process', async (req, res) => { // getting data sent by the form var data = req.body; const functionOne = async function firstFunction() { //do something } const secondFunction = async () => { const update = await functionOne() console.log('something is done'); // now I would like to redirect the user to the 'localhost:3000/done' } secondFunction(); });

/****** *************************** **********/

 the script.js file: function launchTerraform() { var data = { instances: document.getElementById('firstName').value, region: document.getElementById('lastName').value } var xhr = new window.XMLHttpRequest() xhr.onreadystatechange = function () { if (this.readyState === 4 && this.status === 200 && this.responseText) { } } xhr.open('POST', '/provision', true) xhr.setRequestHeader('Content-Type', 'application/json;charset=UTF-8') xhr.send(JSON.stringify(data)) window.location.href = '/process' }
about 4 years ago · Juan Pablo Isaza
2 Respostas
Responde à pergunta

0

Su función de servidor podría simplemente enviar una respuesta vacía (con estado 200) después de que se haya completado la función asíncrona.

 router.post('/process', async (req, res) => { var data = req.body; const functionOne = async function firstFunction() { //do something asynchronous with data } await functionOne(); res.end(); });

Luego, la secuencia de comandos de su cliente podría decirle al usuario que espere antes de realizar un XHR a /process y realizar la redirección a /done después de que haya llegado la respuesta de estado 200.

 xhr.onreadystatechange = function() { if (this.readyState === 4 && this.status === 200) { window.location.href = '/done'; } }; document.getElementById("some_placeholder").textContent = "Please wait ..."; xhr.open('POST', '/process', true); xhr.setRequestHeader('Content-Type', 'application/json;charset=UTF-8'); xhr.send(JSON.stringify(data));
about 4 years ago · Juan Pablo Isaza Relatório

0

Solo puedes enviar una respuesta.

Una solución para esto es usar express-flash para mostrar el mensaje "por favor espere", y luego, una vez que haya terminado, puede usar su respuesta 1 para redirigir al usuario a la página "/hecho" haciendo res.redirect("/done") . Pero eso requiere que uses pasaporte y analizador de cookies.

about 4 years ago · Juan Pablo Isaza Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda