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

243
Visualizações
jQuery y Express: el éxito y el error se mezclan

Esta es una pregunta básica, pero me ha estado molestando por un tiempo y no pude encontrar ninguna pregunta coincidente en mis búsquedas hasta ahora. Entonces, disculpas si es demasiado simple o repetido.

Tengo una ruta API (basada en Express) y estoy llamando a esta ruta usando la llamada jQuery AJAX. Aquí hay un trozo simple para demostrar la configuración

 $.ajax({ url: "http://localhost:3000/admin/items/" + itemId, type: "POST", dataType: "json", data: itemData, contentType: "application/json", success: function(result){alert(result);}, error: function(xhr, ajaxOptions, thrownError){ alert("Could not update item details. Please try again later. Error: " + xhr.statusText); } });

Desde el servidor, confirmé que el código de estado devuelto es 200 y aquí está la implementación:

 collection.update({ _id : mongo.ObjectID(req.params.id) }, req.body, function(err, result) { if(err){ console.log("Error is: " + err); res.status(500).send("Could not update item with id: " + req.params.id); }else { if(result.result.n != 1){ res.status(500).send("Could not find item with id: " + req.params.id); } else{ console.log("Update successful"); res.status(200).send("Successfully updated item id: " + req.params.id); } } });

La funcionalidad funciona perfectamente, pero al final de la llamada, se llama a la función de error y la alerta que recibo es: "No se pudieron actualizar los detalles del elemento. Vuelva a intentarlo más tarde. Error: OK". Intenté una resolución simple .send sin configurar explícitamente el código de estado también, pero de alguna manera invariablemente llama a la función de error. ¿Qué me estoy perdiendo?

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

0

Además de mi comentario anterior, la razón por la que esto ocurre es porque el dataType está configurado para esperar una respuesta JSON, pero express no envía JSON. Cuando jQuery intenta analizar la respuesta, no puede y arroja un error aunque el estado de la respuesta sea 200.

Si quisiera mantener la respuesta que estaba enviando en el ejemplo inicial, simplemente eliminar el dataType de datos de la solicitud ajax sería suficiente, jQuery normalmente es bastante inteligente para descubrir qué se devuelve.

Sin embargo, si desea recibir datos JSON (como se aclara en los comentarios), reemplace su código de respuesta con algo como lo siguiente:

 res.status(200).json({ message: 'Successfully updated item', data: doc // document returned by mongo });

Recuerde cambiar las respuestas de error también a JSON. Aunque jQuery iría al bloque de error de todos modos, es por las razones equivocadas (JSON no válido en lugar del código de error) Algo como esto:

 res.status(500).json({ message: 'Server error occurred' });
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