Node.js - Problema al redireccionar routine metodo post

 
Vista:
Imágen de perfil de Miguel Eduardo
Val: 2
Ha disminuido su posición en 10 puestos en Node.js (en relación al último mes)
Gráfica de Node.js

Problema al redireccionar routine metodo post

Publicado por Miguel Eduardo (3 intervenciones) el 17/01/2020 21:44:00
Hola a todos

Les escribo por aquí, ya que no soy muy experto en NodeJS, pero quiero hacer algo simple, aunque lo he intentado y no doy con la solución.

Quiero desde el frontend realizar una petición al servidor por medio del método post, este procesa y debería redirigir a otra sección, y es lo que no he podido lograr.

Ejemplo de lo que intento

Frontend
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
var objAgente = {
     "FIRSTNAME": "PEDRO",
     "LASTNAME": "PEREZ",
     "NRORUT": "123456789",
     "NROAGENT": "3",
     "HRCONNECT": "12:12:12"
};
 
$.ajax({
     type: 'POST',
     url: '/LoginAgente',
     data: JSON.stringify({ "objectData": objAgente}),
     success: function(data) {console.log('todo OK')},
     contentType: "application/json",
     dataType: 'json'
});

Ahora esto es del lado del servidor

Backend
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
const express = require("express");
const router = express.Router();
 
 
router.use(express.json()) // for parsing application/json
router.use(express.urlencoded({ extended: true })) // for parsing application/x-www-form-urlencoded
 
router.get('/', (req, res)=>{
	res.render('loading.html', { title: 'Iniciando Sistema'});
});
 
router.get('/Inicio', (req,res)=>{
	res.render('confInitial.html', { title: 'Inicio de Sistema'});
});
 
router.get('/Agente', (req,res)=>{
	res.render('PanelAgente/Agente.html', { title: 'Equipo solo Agente'});
});
 
router.post('/LoginAgente', function (req, res) {
	var newUser = req.body;
        console.log(newUser);
	res.redirect('/Agente');
});
 
module.exports = router;

Ocurre que cuando ejecuto el envío del objeto JSON, al backend le llegan los datos ya que los veo los datos por consola, pero el res.redirect no se cumple;

No arroja ningún error, pero no me redirecciona a donde quiero.


Muchas gracias a quienes me puedan dar una idea de lo que ocurre
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de pablo
Val: 46
Ha mantenido su posición en Node.js (en relación al último mes)
Gráfica de Node.js

Problema al redireccionar routine metodo post

Publicado por pablo (14 intervenciones) el 21/01/2020 16:08:33
Hola Miguel, bueno de lo que he visto por ahí puedes intentar colocando algo como:

1
res.redirect('http://google.com')

por probar la redirección que se haga como es y no sea un tema de rutas
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Problema al redireccionar routine metodo post

Publicado por Miguel Rangel (3 intervenciones) el 22/01/2020 14:15:04
Estimado @pablo,

He encontrado la respuesta a mi pregunta, y dejare aquí la respuesta por si a alguien mas le ocurre; Según lo que pude consultar e investigar

1
2
3
4
5
router.post('/LoginAgente', function (req, res) {
	var newUser = req.body;
        console.log(newUser);
	res.redirect('/Agente');
});

Esto esta correcto y debería funcionar a la perfección, el problema esta en el backend, justo acá:

1
2
3
4
5
6
7
8
$.ajax({
     type: 'POST',
     url: '/LoginAgente',
     data: JSON.stringify({ "objectData": objAgente}),
     success: function(data) {console.log('todo OK')},
     contentType: "application/json",
     dataType: 'json'
});

Ocurre que: desde el frontend estamos realizando la petición al backend por medio de AJAX; y porsupuesto que la información que envío desde el cliente al servidor llega, PERO no se cumple el [ res.redirect('/Agente'); ] porque el AJAX se queda esperando retorno del backend para notificar en el frontend la respuesta. La solución seria redireccionar desde el backend asi:

1
2
3
4
5
6
7
8
$.ajax({
     type: 'POST',
     url: '/LoginAgente',
     data: JSON.stringify({ "objectData": objAgente}),
     success: function(data) {window.location.replace('AQUÍ EL URL PARA REDIRECCIONAR')},
     contentType: "application/json",
     dataType: 'json'
});

Si lo que deseo es redirecconar desde el backend por algún motivo. no me servirá realizar la petición POST por AJAX, allí tendría que realizar la petición por medio de <form method="post">

Muchísimas gracias por tu tiempo y colaboración @pablo;

Saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
2
Comentar
Imágen de perfil de pablo
Val: 46
Ha mantenido su posición en Node.js (en relación al último mes)
Gráfica de Node.js

Problema al redireccionar routine metodo post

Publicado por pablo (14 intervenciones) el 22/01/2020 14:23:52
oh que bueno Miguel, pero una pregunta sí ese es el tema por que en tu método post no haces el return y te evitas hacerlo directamente en el ajax es decir algo como return res.redirect('/agente'); no se puede?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Problema al redireccionar routine metodo post

Publicado por Miguel Rangel (3 intervenciones) el 22/01/2020 14:34:23
@pablo

intente todo para redirigir desde el backend, hasta que me hicieron entender que: Nunca podré redireccionar desde allí si usé AJAX, porque interrumpirías el proceso, si esto se pudiera hacer, y redirigiera desde el backend terminarías de forma inesperada el proceso AJAX, ya que no se pudo completar el proceso completo de AJAX.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar