Foros del Web » Programando para Internet » Jquery »

[SOLUCIONADO] peticiones al servidor

Estas en el tema de peticiones al servidor en el foro de Jquery en Foros del Web. Buena amigos..espero que esten todos bien....les comento mi inquietud...estoy trabajando con jquery ajax y php....tengo una tabla con afiliados de unos 20 mil registros....lo que ...
  #1 (permalink)  
Antiguo 04/11/2020, 09:00
 
Fecha de Ingreso: marzo-2009
Mensajes: 291
Antigüedad: 15 años
Puntos: 1
Pregunta peticiones al servidor

Buena amigos..espero que esten todos bien....les comento mi inquietud...estoy trabajando con jquery ajax y php....tengo una tabla con afiliados de unos 20 mil registros....lo que hago es en cuanto abre la pagina hago la petición por ajax, y traigo todos los registros y los almaceno en una datatable y luego busco a la persona que necesito, lo cual me tarda unos 15 segundos y mi pagina queda bloqueada, y es lo que yo no quiero que pase...quiero que el usuario siga viendo llnando datos por ejemplo, mientras por de bajo se carga mi datatable...y si lo necesita lo abre....o se petición en segundo plano pero que no corte la ejecución de mi pagina.. gracias
  #2 (permalink)  
Antiguo 04/11/2020, 10:27
Avatar de ArturoGallegos
Moderador
 
Fecha de Ingreso: febrero-2008
Ubicación: Morelia, México
Mensajes: 6.774
Antigüedad: 16 años, 1 mes
Puntos: 1146
Respuesta: peticiones al servidor

Una peticion AJAX, nunca bloquea el flujo del sitio web salvo que este dependa de la respuesta,

Por ende asumo que es de suma importancia y los 15 segundos te estan matando el interes del usuario.

Lo que tienes que hacer es optimizar el o los procesos de tu servidor, es mucho tiempo de espera, lastimosamente no muestras nada de codigo asi que no se te puede ayudar en absolutamente nada
  #3 (permalink)  
Antiguo 04/11/2020, 10:48
 
Fecha de Ingreso: marzo-2009
Mensajes: 291
Antigüedad: 15 años
Puntos: 1
Respuesta: peticiones al servidor

Bien te muestro

Código Javascript:
Ver original
  1. $.post("./modulos/buscarAfiliado.php", parametros, function(response){
  2.     $("#Mytable").html('');
  3.                  
  4.     if (response != null){
  5.         $("#Mytable").append(`<thead>
  6.             <tr>
  7.                 <th>Id</th>
  8.                 <th>Afiliado</th>
  9.                 <th>Dni</th>  
  10.                 <th>Domicilio</th>                
  11.             </tr>
  12.         </thead><tbody>`);
  13.                      
  14.         $.each(JSON.parse(response), function(i, value){
  15.             $("#Mytable").append(`<tr onclick="AbrirDeuda(${value.idpagador},'${value.nombre}')">
  16.                 <td>${value.idpagador}</td>
  17.                 <td> ${value.nombre}</td>
  18.                 <td>${value.dni}</td>
  19.                 <td>${value.domicilio}</td>
  20.             </tr>`);
  21.         });
  22.  
  23.         $("#Mytable").append(`</tbody>`);
  24.                      
  25.         var table = $('#Mytable').DataTable({
  26.             "destroy": true,
  27.             //"oSearch": {"sSearch": ""},
  28.             language: {
  29.                 "decimal": "",
  30.                 "emptyTable": "No hay información",
  31.                 "info": "Mostrando _START_ a _END_ de _TOTAL_ Entradas",
  32.                 "infoEmpty": "Mostrando 0 to 0 of 0 Entradas",
  33.                 "infoFiltered": "(Filtrado de _MAX_ total entradas)",
  34.                 "infoPostFix": "",
  35.                 "thousands": ",",
  36.                 "lengthMenu": "Mostrar _MENU_ Entradas",
  37.                 "loadingRecords": "Cargando...",
  38.                 "processing": "Procesando...",
  39.                 "search": "Buscar:",
  40.                 "zeroRecords": "Sin resultados encontrados",
  41.                 "paginate": {
  42.                     "first": "Primero",
  43.                     "last": "Ultimo",
  44.                     "next": "Siguiente",
  45.                     "previous": "Anterior"
  46.                 }
  47.             },
  48.         });
  49.     }
  50. });

ese codigo se ejecuta al inciar mi pagina, y hasta que ese codigo no craga todo en el datatable, el usaurio no puede ir llenando un input por ejemplo.

Última edición por Alexis88; 04/11/2020 a las 12:45 Razón: Highlight
  #4 (permalink)  
Antiguo 04/11/2020, 12:50
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: peticiones al servidor

Como te explicaron, una petición asíncrona no causa el efecto que mencionas dado que se ejecuta en paralelo a las acciones que en la capa de presentación sigue efectuando el usuario. Por otro lado, en el código que muestras no se observa ninguna instrucción que habilite campos de texto, por lo cual deduzco que el problema se encuentra en otra parte. Por último, lo que te sugirieron acerca de la optimización se refiere a la capa de negocios, o sea, en el lado del servidor que es en donde se realiza la búsqueda de datos.

Trata de ubicar las instrucciones que mantienen inhabilitados los campos de texto a los que aludes para que puedas anular dicha funcionalidad.

__________________
«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
  #5 (permalink)  
Antiguo 04/11/2020, 15:06
Avatar de ArturoGallegos
Moderador
 
Fecha de Ingreso: febrero-2008
Ubicación: Morelia, México
Mensajes: 6.774
Antigüedad: 16 años, 1 mes
Puntos: 1146
Respuesta: peticiones al servidor

por tu codigo me estoy imaginando que estas cargando los 20 mil registros de un tirón aunado a que tu sitio depende de los datos impresos mediando javascript.

Si es el caso tu problema es de lógica, tienes que obtener los registros en pequeñas cantidades.

digamos carga 20 y cuando se requiera otros 20, ve calando la cantidad 20, 50, 100, 150, hasta 500 como máximo, no veo la necesidad de cargar mas datos si el usuario no los requiere.


Si son indispensables los 20 mil, imprimelos desde servidor y usa sistemas de cache
  #6 (permalink)  
Antiguo 04/11/2020, 19:12
 
Fecha de Ingreso: marzo-2009
Mensajes: 291
Antigüedad: 15 años
Puntos: 1
Respuesta: peticiones al servidor

Muchas gracias por sus respuestas, en realidad quería aprovechar las virtudes del datatable de jquery, por eso quería cargar todo de una vez y luego hacer búsquedas directamente sobre el datatable o sea hago una sola vez la consulta sobre la base de datos. quizas mi problema esta en el datatable...o quizás debo cambiar de lógica como me lo indicaron...gracias...
  #7 (permalink)  
Antiguo 04/11/2020, 23:43
Avatar de ArturoGallegos
Moderador
 
Fecha de Ingreso: febrero-2008
Ubicación: Morelia, México
Mensajes: 6.774
Antigüedad: 16 años, 1 mes
Puntos: 1146
Respuesta: peticiones al servidor

Es una pesima idea cargar todo de un tiron y casi seguro no vas a encontrar forma de solventarlo, tanto en la carga de trabajo para el servidor como el tamaño en KB de la respuesta que recibes es demasiado para procesarlo en poco tiempo.

mira la documentacion de DataTable
https://datatables.net/examples/index

Tiene un apartado de AJAX quizas te sirva
  #8 (permalink)  
Antiguo 05/11/2020, 06:03
 
Fecha de Ingreso: marzo-2009
Mensajes: 291
Antigüedad: 15 años
Puntos: 1
Respuesta: peticiones al servidor

Perfecto...gracias totales....han sido de mucha ayuda.

Etiquetas: peticiones, servidor
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:47.