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

408
Visualizações
jQuery post fail callback no muestra la respuesta para el código 400

Tengo una siguiente solicitud de publicación de jQuery:

 $.post("ajax.php", data).done( function(response){ // do something when response is ok } ).fail( function(response){ $("#error").html(response); } );

En mi archivo ajax.php , cuando algo sale mal, devuelvo el código de respuesta HTTP 400 con un mensaje:

 header("HTTP/1.0 400 Error"); echo "Some error message"; exit();

Cuando verifico la respuesta de una llamada defectuosa en mi navegador, puedo ver el código de Status Code:400 Bad Request y un texto de respuesta que pasé en un mensaje de error. Pero la devolución de llamada .fail de jQuery no muestra mi response .

¿Cómo puedo obtener acceso al texto de respuesta de falla/error?

EDITAR

Probé mi código y se está activando la devolución de llamada .fail , simplemente no puedo mostrar el mensaje de respuesta.

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

0

Necesitas usar jqXHR :

El objeto jQuery XMLHttpRequest (jqXHR) devuelto por $.ajax() a partir de jQuery 1.5 es un superconjunto del objeto XMLHttpRequest nativo del navegador. Por ejemplo, contiene propiedades responseText y responseXML, así como un método getResponseHeader(). Cuando el mecanismo de transporte es diferente a XMLHttpRequest (por ejemplo, una etiqueta de secuencia de comandos para una solicitud JSONP), el objeto jqXHR simula la funcionalidad XHR nativa siempre que sea posible.

.fail es uno de los métodos Promise disponibles del objeto jqXHR,

jqXHR.fail(function( jqXHR, textStatus, errorThrown ) {});

Puede usar la propiedad responseText para obtener el mensaje de error como:

 $.post("ajax.php", data).done( function(response){ // do something when response is ok } ).fail( function(jqXHR, textStatus, errorThrown) { $("#error").html(jqXHR.responseText); } );

Referencia: http://api.jquery.com/jquery.ajax/#jqXHR

over 4 years ago · Santiago Trujillo Relatório

0

Siempre uso 500 para un código de falla ajax y generalmente lo detecta .fail para mí. JQ API para .post tiene una larga lista de enlaces anidados que describen cómo manejan el objeto JqXHR y cómo interactúa con JQ en su conjunto.

Dado que no está activando .fail con su estado, puede hacer que su éxito verifique su código de estado específico en la función .success o .done de esta manera.

 //post stuff .success(function(response){ if(response.status == 400){ //error stuff } });

La ventaja de realizar sus propias comprobaciones en .done o .success es que puede definir algunos comportamientos ingeniosos para diferentes estados que le gustaría devolver desde su servidor. Hay literalmente docenas de formas diferentes de manejar las devoluciones de ajax y definir los comportamientos de devolución de llamada.

** Aquí hay otra pregunta SO que tiene otras resoluciones.

Manejo de errores jQuery AJAX (códigos de estado HTTP)

**La sintaxis aquí es ligeramente diferente porque esta pregunta se centró en el método .ajax en lugar de .post, pero las ideas y resoluciones propuestas aún deberían funcionar.

over 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