Facebook Style Ajax Search
I've created a Facebook style ajax search for my site where as you type it will bring up the results in a nice list below your search. $('#s').keyup(function() { var searchbox
Solution 1:
the method you are referring to is called "Debouncing"
I usually have a "Debounce" function at the bottom of all my scripts
var debounce=function(func, threshold, execAsap) {
var timeout;
returnfunctiondebounced () {
var obj = this, args = arguments;
functiondelayed () {
if (!execAsap)
func.apply(obj, args);
timeout = null;
};
if (timeout)
clearTimeout(timeout);
elseif (execAsap)
func.apply(obj, args);
timeout = setTimeout(delayed, threshold || 100);
};
};
And then whenever I do anything that will benefit from a debounce I can use it generically
So your code would be re-written as
$("#s").keyup(debounce(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 {returnfalse; }
}
,350/*determines the delay in ms*/
,false/*should it execute on first keyup event,
or delay the first event until
the value in ms specified above*/
));
Solution 2:
Another option would be to start searching after 2/3 characters. Waiting for 1 second before making every request doesn't look good to me. Also try to send very less data back to server which might also make the request and response faster.
Solution 3:
You could have a JSON object sitting somewhere and searching that instead of searching the database multiple times. It won't bring too much overhang, as long as it's not a list of 1,000 friends or something.
Post a Comment for "Facebook Style Ajax Search"