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

207
Visualizações
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.

about 4 years ago · Santiago Trujillo
2 Respostas
Responde à pergunta

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.

about 4 years ago · Santiago Trujillo Relatório

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 } } ); });
about 4 years ago · Santiago Trujillo 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