Ver Mensaje Individual
  #4 (permalink)  
Antiguo 17/04/2015, 02:07
Tusade
 
Fecha de Ingreso: marzo-2015
Mensajes: 42
Antigüedad: 9 años, 1 mes
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