AJAX пошук із заданими затримками між запитами

На момент написання цієї публікації, на даному сайті працює AJAX пошук PHP-функцій. Якщо у вас є задумка реалізувати щось подібне, то вам спочатку необхідно скопіювати свіжу версію jQuery, і підключити її до сторінки із запланованим AJAX-пошуком. JavaScript буде працювати із такою HTML формою:
<div class="result">
	<input name="searchq" type="text" onkeyup="find()" />
	<div id="search-result"></div>
</div>
В наведеному нижче JavaScript-коді запускається функція find(), яка відсилає AJAX-запити до файлу search_func.php.
var notFound = '';
var length_noFound = 0;
function find()
{
	var text = $('input[name=searchq]').val();
	if(notFound === '' || notFound !== text.substr(0,length_noFound) )
	{
		if(typeof timer !=='undefined')clearTimeout(timer);
		timer = setTimeout(function()
		{

				$.ajax({url: "/search_func.php"
					,cache:false
					,data: "name="+encodeURI(text)
					,success: function(data)
					{
						$('#search-result').html(data);
					}
					,error: function()
					{
						notFound = text;
						length_noFound = notFound.length;
					}
				});
		},1500);
	}
}

Таким чином, при введенні даних в HTML форму javascript-функція find() буде спрацьовувати при кожному кліку будь-якої клавіші на клавіатурі, і кожен раз timeout буде перевстановлюватись заново, а запуск AJAX запиту буде здійснюватись лише по завершенню встановленого timeout (в даному прикладі - це 1500 мілісекунд). Причому якщо сервер буде присилати відповідь 404 (сторінка не знайдена), то в функції $.ajax() буде задіяний блок, що спрацьовує при помилці. Через нього встановлюється значення змінних notFound та length_noFound. І надалі, якщо користувач не змінить частину тексту, яка не була знайдена (точніше при якій сервер присилає код помилки), то функція не буде посилати AJAX запитів.
Якщо ви знайшли помилку, прохання - виділіть текст помилки (максимум 127 символів) і натисніть Ctrl+Enter.