Foros del Web » Programando para Internet » Jquery »

Promesas

Estas en el tema de Promesas en el foro de Jquery en Foros del Web. Buen día Foro. Llevo ya varios días tratando de retornar el resultado de una petición que hago al servidor con AJAX, pero me retorna indefinido, ...
  #1 (permalink)  
Antiguo 18/11/2019, 10:00
Avatar de laureano59  
Fecha de Ingreso: febrero-2005
Mensajes: 395
Antigüedad: 19 años, 2 meses
Puntos: 1
Promesas

Buen día Foro.

Llevo ya varios días tratando de retornar el resultado de una petición que hago al servidor con AJAX, pero me retorna indefinido, he intentado hacerlo con promesas pero no lo logro.
Entiendo el concepto y se por qué me retorna indefinido, lo que no logro es utilizar correctamente la promesa.
Voy a poner el código tal cual para que me den una luz y poder avanza en el proyecto.

Esta función es lanzada cuando cambio el foco de un input.

Código Javascript:
Ver original
  1. $("#canprotocolohojas").blur(function(){
  2.   var canprotocolohojas, canprotocolopaquetes;
  3.   canprotocolohojas = $("#canprotocolohojas").val();
  4.   canprotocolopaquetes = $("#canprotocolopaquetes").val();
  5.   let res = CacularConceptos(canprotocolohojas, canprotocolopaquetes, 3);
  6.   console.log(res);
  7.   $("#totalprotocolo").val(res);
  8. });

Luego Llamo esta función y le mando los parámetros para que luego me retorne el valor que necesito.
Código Javascript:
Ver original
  1. function CacularConceptos(hojas, paquetes, id_concep){
  2.   var datos = {
  3.       "id_concep": id_concep,
  4.       "hojas": hojas,
  5.       "paquetes": paquetes
  6.   };
  7.   var route = "/valorconceptos";
  8.   var token = $("#token").val();
  9.   var total = 0;
  10.   $.ajax({
  11.     url: route,
  12.     headers: {
  13.       'X-CSRF-TOKEN': token
  14.     },
  15.     type: 'GET',
  16.     dataType: 'json',
  17.     data: datos,
  18.     success: function(info){
  19.       console.log(info.total);//SIN PROBLEMA
  20.       return(info.total);
  21.           }
  22.     });
  23. }

Para no enredarme más de lo que estoy decidí poner el código sin la promesa ya que intenté ponerla en la función CacularConceptos() y nada, luego la puse en la primera función y nada...

Ayuda por Favor...
Gracias de antemano.
__________________
http://www.weblaum.com
Laureano Melo Medina
:arriba:
  #2 (permalink)  
Antiguo 18/11/2019, 10:15
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 12 años, 5 meses
Puntos: 977
Respuesta: Promesas

Para utilizar el dato de retorno, tienes que establecer la petición en forma síncrona, es decir:

Código Javascript:
Ver original
  1. async: false

Pero sería mucho mejor si tan solo le pasaras una función que actúe como llamada de retorno de tal forma que, en la petición, solo la llamarías pasándole el dato como argumento y en la función podrás utilizarlo como desees.

Un ejemplo:
Código Javascript:
Ver original
  1. $.ajax({
  2.     //Pares atributo-valor
  3.     //...
  4. }).done(function(respuesta){
  5.     callback(respuesta);
  6. });
  7.  
  8. //...
  9.  
  10. function callback(dato){
  11.     //Aquí podrás manipular el dato como desees
  12. }

NOTA: En lugar del atributo-métodosuccess utilicé el método done, pero puedes continuar usando el primero, si deseas.

__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand
  #3 (permalink)  
Antiguo 18/11/2019, 11:31
Avatar de laureano59  
Fecha de Ingreso: febrero-2005
Mensajes: 395
Antigüedad: 19 años, 2 meses
Puntos: 1
Respuesta: Promesas

Gracias por responder.
cambiando async A false, funciona sin problema, de hecho así lo tenia pero se que no es la mejor opción, ya que los navegadores no lo recomiendan por varias razones y en futuras actualizaciones esta opción ya será obsoleta.
__________________
http://www.weblaum.com
Laureano Melo Medina
:arriba:
  #4 (permalink)  
Antiguo 10/12/2019, 12:23
Avatar de emilio_viguri  
Fecha de Ingreso: junio-2011
Ubicación: Mexico
Mensajes: 116
Antigüedad: 12 años, 10 meses
Puntos: 3
Pregunta Respuesta: Promesas

Entonces como quedo tu código ?
__________________
Ing. Emilio Viguri de NEXCEN Visitamos en lo que podamos ayudarte.

Etiquetas: Ninguno
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




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