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

210
Vistas
Función Done nunca llamada después de $.ajax

Soy un poco nuevo en todo esto (incluidas las devoluciones de llamada de Javascript y ES6). Estoy usando NodeJS + Express + MongoDB.

Estoy llamando a una función Ajax para actualizar un elemento y la llamada exitosa de Ajax nunca se realiza.

Aquí está mi llamada Ajax (llamada desde React)

 editBug : function(bug){ console.log('about to edit bug with these values',bug); $.ajax({ url:'/api/bugs', method: 'PUT', data:bug }) .done((jqxhr) => { console.log('succcess while editing the bug'); this.setState({successVisible : true}); }) .fail((jqxhr) => { console.log('error : ' + jqxhr); }) },

Aquí está mi función API:

 app.put('/api/bugs',function(req,res){ //console.log('req',req); console.log('query string : ',req.query); console.log('query params : ',req.params); console.log('query body: ',req.body); let id = new ObjectID(req.body._id); req.body._id = new ObjectID(req.body._id); db.collection('bugs').replaceOne( {_id:id}, req.body, function(err,result){ assert.equal(err,null); console.log('Successfull replace!'); res.status(200); } ); });

¡El Successfull replace! log se muestra correctamente en el lado del servidor. El about to edit bug with these values se muestra correctamente en la parte frontal. Pero el succcess while editing the bug no se muestra en la interfaz y parece que la llamada .done nunca se ejecuta.

over 4 years ago · Santiago Trujillo
2 Respuestas
Responde la pregunta

0

¿No necesita terminar su objeto de respuesta en el lado de Node.js? Intente agregar res.end(); o cualquier tipo de respuesta a su objeto de respuesta.

Además, puede usar la pestaña de red de Chrome (o cualquier otro navegador) para ver realmente cómo terminan sus solicitudes AJAX, para ver si se bloquean o finalizan.

over 4 years ago · Santiago Trujillo Denunciar

0

El problema es que no está enviando ninguna respuesta al navegador del lado del nodo. Pruebe el siguiente fragmento y debería estar listo para comenzar

Además, me gustaría señalar que debe manejar los errores. Al actualizar los bugs si algo sale mal, la mejor práctica sería informar al navegador con el código de estado 500 que indica que la acción prevista falló. He agregado este aspecto en el recorte a continuación.

 app.put('/api/bugs', function(req, res) { //console.log('req',req); console.log('query string : ', req.query); console.log('query params : ', req.params); console.log('query body: ', req.body); let id = new ObjectID(req.body._id); req.body._id = new ObjectID(req.body._id); db.collection('bugs').replaceOne({ _id: id }, req.body, function(err, result) { if (err) { console.log('Failed replace'); res.status(500).end(); // <- We set the response status code and end the request } else { assert.equal(err, null); console.log('Successfull replace!'); res.status(200).end(); // <- We set the response status code and end the request } } ); });
over 4 years ago · Santiago Trujillo 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