Foros del Web » Programando para Internet » Javascript »

Cargar HTML antes de traer los datos de la BD con AJAX

Estas en el tema de Cargar HTML antes de traer los datos de la BD con AJAX en el foro de Javascript en Foros del Web. Buen día a todos, tengo una aplicación Web que realiza un "load" de un HTML dentro de un div llamado "contenido" dentro de otro HTML: ...
  #1 (permalink)  
Antiguo 25/12/2022, 13:32
 
Fecha de Ingreso: abril-2016
Mensajes: 18
Antigüedad: 8 años
Puntos: 0
Pregunta Cargar HTML antes de traer los datos de la BD con AJAX

Buen día a todos, tengo una aplicación Web que realiza un "load" de un HTML dentro de un div llamado "contenido" dentro de otro HTML:

Código Javascript:
Ver original
  1. function main_descuentos()
  2. {
  3.     $("#contenido").load(".html/main_descuentos.html");
  4.     init_des();
  5. }

Como ven realizo un "load" desde el archivo "descuentos.html" y luego de eso llamo a la funcion "init_des()" que lo que hace es inicializar el formulario trayendo datos de la BD a través de AJAX con este código:

Código Javascript:
Ver original
  1. function init_des()
  2. {
  3.     var xmlhttp = new XMLHttpRequest();
  4.     xmlhttp.onreadystatechange=function()
  5.     {
  6.         if (xmlhttp.readyState==4 && xmlhttp.status==200)
  7.         {
  8.             Cadena1 = xmlhttp.responseText.split('%')
  9.             var selUsu = document.getElementById("selUsuarios");
  10.             for (i=0 ; i<Cadena1.length-1 ; i++)
  11.             {
  12.                 Cadena2 = Cadena1[i].split('|');
  13.                 var opt1 = document.createElement("option");
  14.                 opt1.value = Cadena2[0];
  15.                 opt1.text = Cadena2[1];
  16.                 selUsu.add(opt1);
  17.             }
  18.         }
  19.     }
  20.  
  21.     xmlhttp.open("POST",".lib/link/linkDescuentos.php",true);
  22.     xmlhttp.setRequestHeader("Content-type","application/x-www-form-urlencoded");
  23.     xmlhttp.send("initDescuentos=1");
  24. }

Lo que hace esta función es llenar un "select" con todos los usuarios que están registrados en la BD.

El problema es que en algunos casos funciona bien pero en otros casos trae los datos antes que termine el "load" del HTML y por consiguiente no encuentra el "select" respectivo para poner los datos en él y luego muestra el "select" vacío.

Ya he tratado cambiando la asincronicidad de "true" a "false" pero cuando hago eso ya nunca funciona.

Gracias por la ayuda!!!
  #2 (permalink)  
Antiguo 25/12/2022, 14:10
 
Fecha de Ingreso: abril-2011
Mensajes: 170
Antigüedad: 13 años
Puntos: 68
Respuesta: Cargar HTML antes de traer los datos de la BD con AJAX

Tienes que añadir el callback de esta forma:

Código javascript:
Ver original
  1. function main_descuentos()
  2. {
  3.     $("#contenido").load(".html/main_descuentos.html", init_des);
  4. }

Así, la función init_des se ejecutará cuando termine de cargarse el contenido en el div.

Saludos

PD: Larga vida a Forosdelweb, el mayor foro de programación de habla hispana que murió por la codicia de su creador (Christian Van der Henst). Es una pena que una comunidad de más de medio millón de usuarios acabe en una web completamente disfuncional, pero esta fue la decisión de Christian.

Última edición por prueba230683; 25/12/2022 a las 14:36

Etiquetas: ajax, ajax-php-mysql, javascript+html, javascript-funciones
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 10:19.