Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

225
Vistas
{ Nodejs - Express } ¡Solicitud de envío del lado del cliente dos veces! Cómo detener este error

¡Solo estoy aprendiendo nodejs pero este error me mata por dentro! Mi sitio web sigue solicitando dos veces cada método de publicación que tenemos. Al principio, pensé que era mi error en relación con mongodb, pero estaba equivocado, esto sucede con todos los métodos POST que tengo en mi sitio web (excepto la función de inicio de sesión).

Método POST de filtrado de red

Ejemplo: Mi función de comentario

Lado del cliente

 $('.commentSubmit').click(e => { e.preventDefault() let commentContent = $('#Comment').val() let postId = $('#input-comment').val() $.ajax({ url: '/dashboard/postComment', type: 'POST', data: { postId: postId, comment: commentContent } }) .done(data => { let htmlcomment = ` <li class="list-group-item mt-3" id="${data._id}"> <h6 class="card-title" >${data.Owner} <p class="card-text"><small class="text-muted">${data.createAt} </small></p> </h6> <h6 class="card-subtitle mb-2 text-muted"></h6> <p class="card-text" >${data.content} </p> <div class="card-footer text-muted" style="text-align: right;"> <button type="button" id="commentdelete" data-id="${data._id}" class="btn btn-danger btn-sm commentdelete">Delete</button> </div> </li>` $(`ul#${postId}ulul`).prepend(htmlcomment) document.getElementById('Comment').value = '' }) })

Servidor

 router.post('/postComment', (req, res) => { console.log('done') req.connection.setTimeout( 1000 * 60 * 10 ) if(req.session._id) { if(!req.body.comment || !req.body.postId) { return res.render('dashboard',{errors: 'Input comment first', user: u, posts: post, comments: comment, notifs: notif}) } let comment = req.body.comment let postId = req.body.postId User.findOne({_id: req.session._id}) .then(u => { user = u }) console.log(req.url) Posts.findOne({_id: postId}) .then(p => { if(!p) res.send('PostID NOT Valid') let comment = new Comments({ content: req.body.comment, Owner: user.name, PostId: postId }) comment.save(); return res.json(comment) }) } else { return res.redirect('/login') }

})

about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

Creo que tiene un formulario en su lado del cliente y un botón con la clase .commentSubmit.

atrapa el evento de clic e intenta evitar el comportamiento predeterminado. cambie el tipo de botón de envío de enviar a botón:

 <button type="button">save</button>

por lo tanto, el botón no enviará su formulario, pero el código js hará la publicación de ajax por usted. el predeterminado de prevención funcionará en el evento form.sumbit si captura el evento form.onsubmit.

about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda