He creado una búsqueda ajax estilo de Facebook para mi sitio en el que a medida que escribe en él aparecerá el resultado en una bonita lista su búsqueda.Facebook Estilo de búsqueda AJAX
$("#s").keyup(function() {
var searchbox = $(this).val();
var dataString = 's='+ searchbox;
if(searchbox!='') {
$.ajax({
type: "POST",
url: "/livesearch.php",
data: dataString,
cache: false,
success: function(html){
$("#display").html(html).show();
}
});
} else {return false; }
});
$("body").click(function() {
$("#display").hide();
});
El problema con esto es que es un poco ineficaz ya que el usuario escriba una palabra, por ejemplo "el fútbol". Esto llevará a cabo 8 solicitudes al servidor. ¿Cuál sería una forma más efectiva de hacer esto? idealmente, creo que debería almacenar la solicitud durante 1 segundo antes de hacer una búsqueda en lugar de una clave instantánea. pero no es 100% seguro de cómo hacer eso ...
por supuesto, se puede jugar con el valor de retardo para averiguar lo que más le convenga, para mí 350m/s funciona perfectamente .... recordar, la gente escriba bastante rápido, y el tiempo de espera consigue restablecen a 350 ms cada vez que se escribe una letra – ekhaled
Además, sugiero almacenamiento en caché de los resultados, ya sea en JS o w/HTTP - ejemplo: 'deboun [500 ms pausa] CWS [1000 ms pausa] [Retroceso] [Retroceso] [Retroceso] [pausa de 500 ms] ce'. Sin almacenamiento en caché, está enviando 2 solicitudes para 'deboun'. – Piskvor
¡Funciona muy bien! ¡Gracias! – TaylorOtwell