Foros del Web » Programando para Internet » Javascript » Frameworks JS »

Mostrar sugerencias

Estas en el tema de Mostrar sugerencias en el foro de Frameworks JS en Foros del Web. Hola a todos. Estoy utilizando Jaxcent para desarrollar mi aplicación web ( http://www.jaxcent.com/ --> Jaxcent provides a Java framework and API for doing AJAX programming.) ...
  #1 (permalink)  
Antiguo 09/09/2009, 02:15
 
Fecha de Ingreso: septiembre-2007
Mensajes: 56
Antigüedad: 16 años, 7 meses
Puntos: 0
Mostrar sugerencias

Hola a todos.

Estoy utilizando Jaxcent para desarrollar mi aplicación web (http://www.jaxcent.com/ --> Jaxcent provides a Java framework and API for doing AJAX programming.)

Pues bien, explico lo que quiero hacer. Han visto las sugerencias que muestra google en su barra a medida que se introduce un texto?? pues básicamente es eso.

Tengo un HtmlInputText donde el usuario va introduciendo un texto. HE programado el evento onKeyUp del objeto, y en él hago una consulta a la BBDD para ver coincidencias de lo que me ha metido hasta el momento con cosas que puedan coincidir con lo que tengo en la BBDD, obtengo la lista de coincidencias y las añado a un select de --sugerencias--.

Pues bien, el problema es que esto únicamente funciona si se teclea muuuuuuuuuuy lentamente, vamos, q un usuario tecleando "normal" volvería loco al sistema. No se ni por qué puede ser debido ni la forma de solucionarlo (ya digo, la idea es hacer lo q tiene google con sus sugerencias).

Muchas gracias,

un saludo.
  #2 (permalink)  
Antiguo 09/09/2009, 19:01
Avatar de mfb5  
Fecha de Ingreso: septiembre-2009
Mensajes: 23
Antigüedad: 14 años, 7 meses
Puntos: 2
Respuesta: Mostrar sugerencias

Hola AlexCollado yo creo que tu problema es que estás usando una extensa libreria Ajax para hacer algo que no lo merce yo te recomiendo que lo hagas tu en javascrip es muy sencillo supongo que tiene tu servlet que hace consultas a la base de datos te muestro un ejemplo de ajax sencillo:

Código:
var oXHR =  new XMLHttpRequest();													
oXHR.open('post', tuservlet, true);
oXHR.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
oXHR.onreadystatechange = function () {
		if (oXHR.readyState == 4) {
			if (oXHR.status == 200) {
				// solicitud corecta y aqui puedes modificar
                              // el contenido de tu div que tiene les sugerencia
			} else {
			    //lo que quieres que haga en caso de que no lleguen los datos todavía
		        }
			}else{
                              //aqui hubo un error y no se obtuvo nada
			}
		};
oXHR.send(sBody);
espero te haya ayudado...

Última edición por tunait; 10/09/2009 a las 06:18 Razón: remover firma
  #3 (permalink)  
Antiguo 10/09/2009, 16:24
 
Fecha de Ingreso: julio-2009
Mensajes: 2
Antigüedad: 14 años, 9 meses
Puntos: 0
Respuesta: Mostrar sugerencias

Otra solución podría ser que hicieras un timeout. Es decir, a los X segundos de que el usuario deje de escribir creas la petición. Yo lo suelo usar para comprobar formularios mientras el usuario escribe. Por ejemplo, la función esperar esperará 2 segundos antes de ejecutar la función "peticion()", y si se vuelve a llamar en menos de ese lapso de tiempo se reseteará y volverá a esperar 2 segundos más:

Código:
var i = 0;
var timeout;
var esperar = function(){
    if(i != 0){
        clearTimeout(timeout);
    }
    timeout = setTimeout(peticion(), 2000);
    i = 1;
}

var peticion = function(){
    // Crear petición AJAX...
    [...]
    i = 0;
}
Código HTML:
<input [...] onKeyUp="esperar();" /> 
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 14:41.