Прежде чем с объектом XMLHttp можно будет работать, его, понятное дело, надо создать. Microsoft реализовала объект в виде элемента управления ActiveX, поэтому в JavaScript приходится использовать проприетарный класс ActiveXObject, указывая сигнатуру элемента управления XMLHttp:
var oXmlHttp = new ActiveXObject("Microsoft.XMLHttp");
Эта строка создает объект XMLHttp первой версии (распространялась с броузером IE 5.0). Но дело в том, что существуют более новые версии объекта, появлявшиеся в каждой последующей версии библиотеки MSXML. Каждая новая версия обладала более высокой стабильностью и быстродействием, поэтому мысль о том, что лучше работать с одной из самых последних версий, имеющихся на машине пользователя, на¬верняка покажется вам привлекательной. Возможные сигнатуры пе¬речислены ниже:
• Microsoft.XMLHttp
• MSXML2.XMLHttp
• MSXML2.XMLHttp.3.0
• MSXML2.XMLHttp.4.0
• MSXML2.XMLHttp.5.0
К сожалению, единственный способ выбрать наилучшую версию за¬ключается в том, чтобы попытаться создавать их по очереди. Посколь¬ку это все-таки элемент управления ActiveX, любая ошибка создания объекта будет возбуждать исключительную ситуацию, а это означает, что попытки создания объекта необходимо предпринимать внутри конструкции try... catch. В результате функция создания объекта мо¬жет выглядеть так:Функция createXMLHttp() хранит сигнатуры объекта XMLHttp в виде мас¬сива, при этом чем новее версия, тем ближе к началу массива располо¬жена ее сигнатура. Функция обходит в цикле все сигнатуры и пытает¬ся создать объект XMLHttp, соответствующий каждой из них. Если по¬пытка терпит неудачу, управление передается в блок catch, что предот¬вращает остановку исполнения кода JavaScript из-за ошибки, и затем предпринимается новая попытка со следующей сигнатурой.
Если объ¬ект удалось создать, он возвращается. Если функции вообще не уда¬лось создать объект XMLHttp, она возбуждает исключение, чтобы проин¬формировать приложение о неудаче.
В других броузерах создание объекта XMLHttp осуществляется гораздо проще. И в Mozilla Firefox, и в Opera, и в Safari этим занимается один и тот же код:
var oXmlHttp = new XMLHttpRequestQ;
Это облегчает выработку решения по созданию объекта XMLHttp, не за¬висящего от типа броузера. Такую функцию можно создать, внеся сле¬дующие изменения в функцию createXMLHttpO, описанную выше:
Теперь эта функция сначала выясняет, определен ли класс XMLHttpRe-quest (с помощью оператора typeof). Если класс XMLHttpRequest опреде¬лен, то он используется для создания объекта XMLHttp; в противном случае проверяется существование класса ActiveXObject и, если он су¬ществует, выполняются действия по созданию объекта XMLHttp в IE. Ес¬ли же обе эти попытки потерпели неудачу, возбуждается исключение.
Вот еще один способ создания объектов XMLHttp, не зависящий от типа броузера: можно взять библиотеку, уже включающую в себя весь необ¬ходимый код, учитывающий различия между броузерами. В качестве примера назовем библиотеку zXml, написанную двумя авторами этой книги. Библиотеку можно скачать с сайта www.nc20nline.net/down¬loads/. В ней имеется функция для создания объектов XMLHttp:
var oXmlHttp = zXmlHttp.createRequestO;
И функция createRequestQ, и сама библиотека zXml в этой книге ис¬пользуются для устранения проблем совместимости кода с разными типами броузеров.
Использование XMLHttp
Создав объект XMLHttp, можно приступать к выполнению запросов HTTP из кода JavaScript. Первый шаг заключается в вызове метода open (), ко¬торый инициализирует объект. Этот метод принимает три аргумента:
• Тип запроса. Строка, определяющая тип выполняемого запроса; обычно GET или POST (только эти два типа поддерживаются всеми броузерами).
• URL. Строка, определяющая URL, куда должен быть отправлен за¬прос.
• Async. Логическая величина, определяющая режим выполнения запроса (асинхронный или синхронный).
настольная игра звездный манчкин . вап разработка . Участок в коттеджном поселке. Продажа участков в коттеджном поселке.