Класс SuggestionProvider гораздо проще в реализации, чем класс AutoSuggestControl, поскольку он выполняет единственную функцию -запрашивает список подсказок у сервера и возвращает его элементу управления. Для этого объекту SuggestionProvider необходим экземп¬ляр XmlHttp. Чтобы избежать увеличения накладных расходов на соз¬дание нового объекта для каждого запроса и последующего его унич¬тожения, мы создадим единственный экземпляр XmlHttp, который и будет использоваться для выполнения всех запросов. Этот единствен¬ный экземпляр мы создадим с помощью фабрики zXmlHttp из библиоте¬ки zXml и сохраним в свойстве http:
'function SuggestionProviderO {■ -
this.http = zXmlHttp,createRequest();
>v} .... . . ... . ......
Класс SuggestionProvider обладает единственным методом, о чем мы уже говорили при обсуждении архитектуры приложения. Этот метод при¬нимает два аргумента: ссылку на экземпляр класса AutoSuggestControl и флаг, указывающий на необходимость задействования функции ав¬томатического дополнения. Полный текст метода приводится ниже:
г.." SuggestionProvider.prototype, requestSuggestions-function (oAutoSuggestControl,
bTypeAhead) {
n-..- varoHttp = this, http;
'";' ' // отменить' выполнение активного запроса ' ' ' if (oHttp. readyState != 0) {
* oHttp.abortO; ' •
II определить данные для запроса var oData = {
requesting: "StatesAndProvinces",
text:.oAutoSuggestControl;userText, '•
Первая строка метода записывает ссылку на объект XmlHttp в пер ную oHttp. Так мы избавляемся от лишней работы и делаем текст] да чище и понятнее. Затем проверяется наличие незавершенно проса. Если объект XmlHttp готов к приему нового запроса, то eroi ство readyState будет иметь значение 0, в противном случае прв отменить исполнение текущего запроса (вызовом метода abort()).
Предполагается, что данные будут переданы серверу в формате« поэтому сначала надо создать объект (oData) для хранения этой i мадии. Серверу передаются три параметра: имя таблицы, из будут извлекаться данные, текущее содержимое текстового пола i и максимальное число подсказок (5). Количество подсказок ог для того, чтобы сократить время выполнения запроса к базе да
Далее инициализируется запрос, и при этом указывается, что; должен быть передан серверному сценарию suggestions, php. За дет выполняться в асинхронном режиме (последний аргумент i open() имеет значение true), поэтому необходимо назначить чик события onreadystatechange. Обработчик сначала проверяет» во readyState на равенство числу 4, а затем интерпретирует по ный текст как массив значений в формате JSON. Этот массив i с флагом, полученным в качестве входного аргумента, передае тоду autosuggestQ класса AutoSuggestControl.
В заключение этот метод отправляет запрос. Обратите внима запрос выполняется методом POST, и поэтому данные переда тоду send(), но перед этим объект oData кодируется в формат JS
На этом реализацию класса SuggestionProvider можно считать: ной. Теперь нам предстоит написать сценарий suggestions, php,: будет выбирать подсказки из базы данных и возвращать их i

//.открыть соединеннее сервером. :
oHttp, open ("post", "suggestions, php", true);
oHttp.onreadystatechange = function () {
if (oHttp.readyState == 4) {

ремонт пк . Оптовая продажа поддонов, продадим поддон деревянный. Продажа поддонов Люберцы. . Работа водителем в Москве, работа. Работа водителем в москве, вакансии для водителей в рф.