Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

185
Views
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 answers
Answer question

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 Report

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!