Foros del Web » Programando para Internet » Javascript »

[SOLUCIONADO] Duda de novato

Estas en el tema de Duda de novato en el foro de Javascript en Foros del Web. Buenas tardes, ante todo un cordial saludo, no soy muy experto en programación pero día a día trato de aprender, necesito leer desde una base ...
  #1 (permalink)  
Antiguo 16/04/2015, 13:55
 
Fecha de Ingreso: diciembre-2014
Mensajes: 69
Antigüedad: 10 años
Puntos: 2
Duda de novato

Buenas tardes, ante todo un cordial saludo, no soy muy experto en programación pero día a día trato de aprender, necesito leer desde una base de datos unos registros, y mostrarlos en pantalla, cuando los datos cambien, necesito que esos cambios se vean en pantalla sin necesidad de refrescar la base de datos, leyendo creo que entendí que la mejor opción seria utilizar javascript, en todo caso si me pueden orientar se los agradecería mucho, lo que necesito es que me orienten sobre que técnicas debo utilizar, si este tema no corresponde aquí, mil disculpas, espero sepan entender mi duda.
  #2 (permalink)  
Antiguo 16/04/2015, 14:21
Avatar de Carlangueitor
Moderador ლ(ಠ益ಠლ)
 
Fecha de Ingreso: marzo-2008
Ubicación: México
Mensajes: 10.037
Antigüedad: 16 años, 9 meses
Puntos: 1329
Respuesta: Duda de novato

Para eso se usa AJAX. Investiga sobre eso.

Saludos
__________________
Grupo Telegram Docker en Español
  #3 (permalink)  
Antiguo 16/04/2015, 14:25
 
Fecha de Ingreso: diciembre-2014
Mensajes: 69
Antigüedad: 10 años
Puntos: 2
Respuesta: Duda de novato

Muchas gracias, investigare al respeccto, yo desarrollo pero en php lo que necesito, pero no cambia a menos de que recargue la pagina
  #4 (permalink)  
Antiguo 17/04/2015, 02:07
 
Fecha de Ingreso: marzo-2015
Mensajes: 42
Antigüedad: 9 años, 9 meses
Puntos: 2
Respuesta: Duda de novato

Es como te han dicho: necesitas AJAX.

Te pongo un ejemplo que hecho yo (soy novato también) que me funciona a las mil maravillas:

Se trata de una página web, que cada vez que el usuario ejecuta determinado evento, éste llama a JavaScript, que a su vez llama al propio Servidor para pedirle datos (a través de una Base de Datos como MySQL) que escribe en la página web mediante un "innerHTML". Es decir, que no hace falta recargar la página entera, algo muy útil y cómodo.


El usuario ejecuta un evento cualquiera que llama a esta función JavaScript:

Código Javascript:
Ver original
  1. function Cargar(id_seleccionado, id_a_consultar){
  2. /* Un evento cualquiera, Onchange dentro de un elemento SELECT (por ejemplo), llama a la función "Cargar" que contiene 2 datos:
  3. "id_seleccionado" que es el id del elemento seleccionado en ese SELECT (onchange="cargar(this.id)"),
  4. y "id_a_consultar" que es el id del elemento donde vamos a escribir nuestros resultados. */
  5.  
  6.             var xmlhttp; //Declaramos la variable donde guardaremos nuestro resultado
  7.             var valor = document.getElementById(id_seleccionado).value; /* Obtenemos el atributo "value" del elemento con Id igual
  8.             al "id_seleccionado" */
  9.  
  10.             document.getElementById(id_a_consultar).innerHTML="<OPTION>Cargando...</OPTION>"; /* Mientras hace la petición
  11.             al Servidor, escribimos "Cargando..." o algo así */
  12.             if (window.XMLHttpRequest) // Para saber si el navegador soporta lo que vamos a hacer
  13.                 {// code for IE7+, Firefox, Chrome, Opera, Safari
  14.                 xmlhttp= new XMLHttpRequest();
  15.                 }
  16.             else
  17.                 {// code for IE6, IE5
  18.                 xmlhttp= new ActiveXObject("Microsoft.XMLHTTP");
  19.                 } // Fin del primer IF
  20.                  
  21.             /* Aquí abajo está la función para escribir el resultado de nuestra petición al Servidor. Si JavaScript lee esta función,
  22.             significa que el servidor ya nos ha respondido */
  23.             function escribir() {
  24.                 if (xmlhttp.readyState===4 && xmlhttp.status===200) // Nos da el visto bueno con un Ok
  25.                     {
  26.                    /* Como el Servidor nos ha respondido correctamente, escribimos nuestro resultado en donde queramos */
  27.                     document.getElementById(id_a_consultar).innerHTML=xmlhttp.responseText;
  28.                     }
  29.  
  30.                 else { // No nos da el visto bueno, hay algún tipo de error o algo así.
  31.                     document.getElementById(id_a_consultar).innerHTML="ERROR" + xmlhttp;
  32.                 }
  33.             }
  34.                
  35.             xmlhttp.onreadystatechange = escribir; // Esto es, cuando la página reciba respuesta, llamará a la función escribir()
  36.  
  37.             /* En "open" escribimos la dirección URL donde la página enviará su solicitud. ¡CUIDADO! El Servidor de datos
  38.             y la página web deben estar en el mismo dominio, de lo contrario, dará error */
  39.             xmlhttp.open("POST","http://NOMBRE-DE-MI-PC:8080/MI-PROYECTO/cargar_datos",true);
  40.             xmlhttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
  41.  
  42.             /* Aquí ponemos las variables que queramos enviar al servidor. Yo le he enviado 2 variables:
  43.             la variable "que_datos" con un valor igual al "id_seleccionado"
  44.             y la variable "que_valor" con la variable "valor" que ya declaré antes */
  45.             xmlhttp.send("que_datos="+id_seleccionado+"&que_valor="+valor);
  46.                    
  47.         }

La página http://NOMBRE-DE-MI-PC:8080/MI-PROYECTO/cargar_datos se redirigirá a un Servlet Java del Servidor
que procesará la petición y devolverá unos cuantos "out.println()" que JavaScript recogerá
dentro de la variable "xmlhttp.responseText;".

Si quieres, te pongo el Servlet que tengo yo.

Pero bueno, como ya digo, yo también soy novato. Así no sé si lo que he escrito será eficiente o no, pero lo que sí es cierto es que funciona.

Última edición por Tusade; 17/04/2015 a las 02:25
  #5 (permalink)  
Antiguo 22/06/2015, 07:11
 
Fecha de Ingreso: diciembre-2014
Mensajes: 69
Antigüedad: 10 años
Puntos: 2
Respuesta: Duda de novato

Excelente muchas gracias

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

SíEste tema le ha gustado a 2 personas




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