Ho creato una ricerca Ajax in stile Facebook per il mio sito, mentre durante la digitazione verranno visualizzati i risultati in una bella lista sotto la ricerca.Facebook Style AJAX Search
$("#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();
});
Il problema di questo è che è un po 'inefficace come l'utente digita una parola per esempio "calcio". Questo eseguirà 8 richieste al server. Quale sarebbe un modo più efficace per farlo? idealmente penso che dovrebbe archiviare la richiesta per 1 secondo prima di fare una ricerca piuttosto che una chiave istantanea. ma non sicuro al 100% come fare ...
, naturalmente, si può giocare con il valore di ritardo per scoprire cosa vi si addice meglio, per me 350m/s funziona perfettamente .... ricordate, la gente scrive abbastanza veloce, e il timeout ottiene la risistemazione a 350ms ogni volta che una lettera viene digitato – ekhaled
Inoltre, vi suggerisco di caching dei risultati, sia in JS o w/HTTP - ad esempio: 'deboun [500 ms pause] cws [pausa di 1000 ms] [backspace] [backspace] [backspace] [pausa di 500 ms] ce'. Senza la memorizzazione nella cache, stai inviando 2 richieste per 'deboun'. – Piskvor
Funziona alla grande! Grazie! – TaylorOtwell