Foros del Web » Programando para Internet » Jquery »

.catch en axios no tiene efecto

Estas en el tema de .catch en axios no tiene efecto en el foro de Jquery en Foros del Web. Gente de la comunity, buenas las tengan.... Acá reportando la novedad de que estoy tratando de sumergirme en el mundo del axios (primíparo en la ...
  #1 (permalink)  
Antiguo 02/08/2019, 19:47
 
Fecha de Ingreso: junio-2004
Ubicación: Ciudad de Panama
Mensajes: 534
Antigüedad: 15 años, 1 mes
Puntos: 7
.catch en axios no tiene efecto

Gente de la comunity, buenas las tengan....

Acá reportando la novedad de que estoy tratando de sumergirme en el mundo del axios (primíparo en la materia) y tengo los siguiente líos:

1.- Al probar mi script en Chrome arrancando me reporta el siguiente Warning:

Código PHP:
Ver original
  1. Source map error: request failed with status 404
  2. Resource URL: http://localhost/axios.min.js
  3. Source Map URL: axios.min.map

Pero en Firefox no reporta nada. Como menciono, es un Warning pero la idea es que no ocurra...

2.- Al aplicar el código:

Código Javascript:
Ver original
  1. axios({
  2.       method: 'post',
  3.       url: 'entrada_registra.php',
  4.       data: mis_datos,
  5.       config: { headers: {'Content-Type': 'multipart/form-data' }}
  6.   })
  7.   .then(function (response) {
  8.       //handle success
  9.       console.log("OKKK");
  10.       console.log(response)
  11.   })
  12.   .catch(function (response) {
  13.       //handle error
  14.       console.log(response)
  15.   });

y forzando error de conexión a la base de datos (BD no existe) siempre llegar por .then(function (response). Pienso que debería llegar por .catch(function (response), al igual que forzar, por ejemplo algún error de sintaxis de PHP

Cómo podría (del verbo poder) solucionar esta situación?

Agradezco de antemano sus comentarios y sugerencias

Gracias pues
__________________
El que no sabe y sabe que no sabe, es un ignorante...enseñémosle!. El que no sabe y se cree que sabe, es un necio... ¡ignorémosle!.
El que sabe y sabe que sabe, es un sabio... ¡sigámosle!.
  #2 (permalink)  
Antiguo 03/08/2019, 22:26
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 9.940
Antigüedad: 11 años
Puntos: 2181
Respuesta: .catch en axios no tiene efecto

1. El error o advertencia de Chrome se refiere a que no puede cargar axios.min.js y lo único que debes hacer es revisar y corregir la ruta.

2. Creo que estás confundiendo los conceptos, si tu script PHP no puede conectar a base de datos, es ahí mismo donde debes capturar el error, sin embargo, estás devolviendo una salida válida y, por tanto, axios determina que no hay error.

Supongo que si intentas ejecutar un script php que no existe (o generes otro error dentro del javascript) será entonces cuando axios tome la ruta del catch.
__________________
- León, Guanajuato
- GV-Foto
  #3 (permalink)  
Antiguo 14/08/2019, 17:30
 
Fecha de Ingreso: junio-2004
Ubicación: Ciudad de Panama
Mensajes: 534
Antigüedad: 15 años, 1 mes
Puntos: 7
Respuesta: .catch en axios no tiene efecto

Hola a [email protected] de la comunidad,

Primero que todo, Señor Triby Gracias por su respuesta.

Segundo que todo y Volviendo a retomar el tema y simulando algún error al realizar un query, detecto ahora lo siguiente:

Efectivamente toma efecto el .catch pero no se visualiza el texto del error. Al activar el depurador o herramienta de desarrollo del navegador (Ctrl+Shift+I) obtengo

Código Javascript:
Ver original
  1. TypeError: cannot use 'in' operator to search for 'length' in '<br />
  2. <b>Warnin...' entrada_ajax.js:388:13
  3. Object {  }

Al entrar a la pestaña Red y haciendo click en el último mensaje (que aprosópito aparece con estado 200) aparece el texto del error que arroja el motor de la BD, entónces cómo le hago para capturar ese mensaje y mostrarlo al usuario, tal vez con un alert....

Como siempre, agradezco infinito sus comentarios y sugerencias al respecto....

Felicidades pues!!!
__________________
El que no sabe y sabe que no sabe, es un ignorante...enseñémosle!. El que no sabe y se cree que sabe, es un necio... ¡ignorémosle!.
El que sabe y sabe que sabe, es un sabio... ¡sigámosle!.
  #4 (permalink)  
Antiguo 14/08/2019, 21:49
 
Fecha de Ingreso: junio-2004
Ubicación: Ciudad de Panama
Mensajes: 534
Antigüedad: 15 años, 1 mes
Puntos: 7
Respuesta: .catch en axios no tiene efecto

Hola de nuevo pues......

Hasta el momento la vaina va así:

1. Una vez ocurre el error del query el texto completo del error entra como si la respuesta fuese exitosa (status 200), pero ejecuta solamente y únicamente la primera instrucción definida dentro del .then y luego pasa a ejecutar las instrucciones dadas dentro del .catch

2. Cuando entra al .catch, según mi código

Código Javascript:
Ver original
  1. .catch(function (error) {
  2.  
  3. alert(error);
  4.  
  5.     var errorObject=JSON.parse(JSON.stringify(error));
  6. alert(errorObject);
  7.  
  8.     $.each(errorObject.data, function (i,dato) {
  9.       alert(errorObject);
  10.       console.log(errorObject.data);
  11.         if (errorObject.data[i].estado) {
  12.           alert(errorObject.data[i].descr);
  13.         }
  14.     })
  15.   });

el primer alert(error) es TypeError: cannot use 'in' operator to search for 'length' in '<br />
<b>Warnin...'
y el segundo alert(errorObject) da [object Object]. El $.each brilla por su ausencia (No pasa nada).

3. La buena noticia para este pecho es que al fín pude solucionarlo, bien o mal pero funcionó para mí. Como dije, al ocurrir el error de query se ejecuta la primera instrucción que se indica en el .then, entónces hice que esa primera instrucción fuese almacenar en una variable global el mensaje de error y en el .catch trabajo esa variable global y así puedo mostrarla en algún lado o de cualquier manera, como puede ser, por ejemplo, en un alert....

Así funcionó para mí.... si hay otra solución más mejor que esta, bienvenida sea....


Hasta depues pues, y sigan siendo felices....
__________________
El que no sabe y sabe que no sabe, es un ignorante...enseñémosle!. El que no sabe y se cree que sabe, es un necio... ¡ignorémosle!.
El que sabe y sabe que sabe, es un sabio... ¡sigámosle!.
  #5 (permalink)  
Antiguo 15/08/2019, 07:48
Avatar de ArturoGallegos
Moderador
 
Fecha de Ingreso: febrero-2008
Ubicación: Morelia, México
Mensajes: 6.435
Antigüedad: 11 años, 5 meses
Puntos: 1065
Respuesta: .catch en axios no tiene efecto

en lugar de alert mandalo a consola
alert(error); ->>> console.log(error)

Ahora bien estas seguro de querer obtener el objeto error completo o solo lo que tu enviastes?

porque si solo quieres lo que tu enviaste en mi caso siempre es con

console.log(error.response.data)
  #6 (permalink)  
Antiguo 15/08/2019, 16:06
 
Fecha de Ingreso: junio-2004
Ubicación: Ciudad de Panama
Mensajes: 534
Antigüedad: 15 años, 1 mes
Puntos: 7
Respuesta: .catch en axios no tiene efecto

Señor ArturoGallegos, gracias por su interés en el tema....

Lo que deseo es obtener el mensaje de error que genera el motor de BD, PostgreSql en mi caso.

Al hacer console.log(error.response.data) en el .catch obtengo TypeError: error.response is undefined
__________________
El que no sabe y sabe que no sabe, es un ignorante...enseñémosle!. El que no sabe y se cree que sabe, es un necio... ¡ignorémosle!.
El que sabe y sabe que sabe, es un sabio... ¡sigámosle!.



La zona horaria es GMT -6. Ahora son las 00:18.