Первоначально Microsoft разработан XMLHttpRequest чтобы Internet Explorer (IE) для загрузки XML документов из JavaScript. Даже если она XML в названии, XMLHttpRequest действительно является общим HTTP клиента JavaScript. Что он, JavaScript может Получите и HTTP POST запросы. (Для POST запросов, данные могут быть отправлены на сервер в формате по выбору.) Основные ограничения XMLHttpRequest, должны быть в безопасности браузера песочнице. Это может сделать только HTTP (S) запросов (URL, файл, например, не будет работать), и он может сделать запросы только на том же домене, загруженных в данный момент страницу.
|
|
Безопасность ограничения XMLHttpRequest сделать лимит, каким вы можете его использовать, но компромисс в дополнительной безопасности хорошо стоит. Большинство нападений на JavaScript вокруг центра прикладных инъекций вредоносного кода на веб-странице. Если XMLHttpRequest позволяет запросы любого веб-сайта, она стала главным действующим лицом в этих нападениях. Безопасность песочнице уменьшает эти возможные проблемы. Кроме того, он упрощает модель программирования, поскольку JavaScript код может косвенно доверия никаких данных она нагрузок от XMLHttpRequest. Он может доверять данных, поскольку новые данные столь же безопасные, так как страница, которая загружается первоначальный страницы.
Несмотря на то, что XMLHttpRequest содержит лишь небольшую API и только горстке методов и свойств, она имеет свои различия между браузерами. Эти различия в основном в случае обработки и инстанцирования объекта (в IE, XMLHttpRequest, впрочем, является ActiveX объект), поэтому они не трудно обойти. В следующий обзор в XMLHttpRequest API, в Mozilla синтаксиса для инстанцирования XMLHttpRequest используется. Если вы хотите запустить примеры в IE, нужно заменить новым XMLHttpRequest (); Либо новых ActiveXObject ( "MSXML2.XMLHTTP.3.0"); Или полного перекрестного метода инстанцирования браузер показывает в "кросс-кантри Browser XMLHttpRequest "разделе этой статьи.
XMLHttpRequest - это наиболее часто используемых метода для AJAX сообщений, поскольку он предоставляет два уникальных особенностей. Первая функция позволяет загрузить новый контент без содержания, которые были изменены каким-либо образом, что делает ее чрезвычайно легко соответствовать AJAX в вашей нормальной модели развития. Вторая функция JavaScript позволяет сделать синхронных звонков. А синхронное слово останавливает все другие операции, пока она полностью, и, хотя это не вариант, что обычно используется, он может быть полезен в тех случаях, когда текущий запрос должен быть завершен до приняты дальнейшие меры.
Открытый метод используется для выбора типа запроса (GET, POST, PUT, или PROPFIND), адрес страницы запрашивается, и является ли звонок будет асинхронной. А имя пользователя и пароль для аутентификации HTTP также может быть принят по желанию. В URL может быть относительный путь (например page.html), или полный, которая включает в себя адрес сервера (например, http://blog.joshuaeichorn.com/page.html). Основной метод подпись:
В JavaScript окружающей среды, безопасности, ограничения на месте. Эти ограничения безопасности, вызвать открытый метод бросать исключение, если URL из другой домен, чем на текущей странице. Следующий пример использует открытые создать синхронное Получите запрос на index.html:
В направить метод делает соединение с URL, указанных в открытой. Если запрос асинхронно, то вызов будет вернуть его сразу; В противном случае вызов будет блокировать дальнейшее выполнение до тех пор, пока загружена. Если запрос типа POST, полезной нагрузки будет направлена как орган с просьбой о том, что на сервер отправляется. Метод подпись:
Если сделать POST запрос, нужно будет установить содержания типа заголовка. Таким образом, сервер знает, что делать с загружены содержание. Чтобы имитировать отправив форму с помощью HTTP POST, можно установить тип содержания применения / х Картинки с LinuxParty.sk - форма - urlencoded. URLencoded данных имеет тот же формат, что вы видите в URL после "?" . Вы можете увидеть пример этой кодирование данных посредством формы и установления его метод Получите. Следующий пример показывает синхронное POST запрос на index.php, что направляет URLencoded нагрузки. Если содержит index.php <? Php var_dump ($ _POST); ? >, Вы можете посмотреть представленные данные переводятся как будто она в обычной форме в боевой готовности:
Есть много разных случаев, в которых установить заголовок на запрос может быть полезным. Наиболее распространенные применения setRequestHeader () заключается в установлении содержания типа, поскольку большинство Web приложений уже знаете, как обращаться с определенными типами, например, URLencoded. В setRequestHeader метод подписи принимает два параметра: заголовок и установить его значение:
Поскольку запросы, отправляемые с помощью XMLHttpRequest отправить один и тот же стандарт заголовков, в том числе заголовков и cookie аутентификации HTTP заголовки, как обычный запрос браузера, заголовок название, как правило, название в заголовке HTTP, которые вы хотите переопределить. В дополнение к главной умолчанию заголовки, setRequestHeader полезна для установления обычая, применения конкретных заголовки. Пользовательские заголовки, как префикс с X - чтобы отличать их от стандартными. Следующий пример делает синхронное Получите просьбой добавить заголовок называется Х - foo в test.php. Если содержит test.php <? Php var_dump ($ _SERVER); ? > Вы видите заголовок, представленный в боевой готовности:
В geTResponseHeader метод позволяет получать единый заголовок ответа; Это особенно полезно, когда все что нужно - как заголовок - содержание типа; Отметить, что указанный заголовок не учитывается регистр. Метод подпись выглядит следующим образом:
getAllResponseHeaders возвращает все заголовки ответа в одной строкой; это полезно для отладки или поиска по стоимости. Следующий пример делает синхронное Получите запрос на test.html. Когда клиент получает ответ, содержания типа будет предупрежден, и все заголовки предупредил:
Все браузеры осуществлять прерывания () метод, который используется для того, чтобы удалить в ходе асинхронного запроса. (Одним из примеров этого приводится в "Отправка Asynchronous просит" раздел в этой статье.) Mozilla браузерах на основе предлагаем некоторые дополнительные методы поверх основных API; Например, addEventListener () и removeEventListener () предусмотрен способ улова статус события без использования по * свойствами. Существует также overrideMimeType () методом, что позволяет заставить Содержание - тип текста / xml так, что он будет разбору в DOM документе даже если сервер не сообщает ее как таковую. В Mozilla - конкретные методы могут быть полезными в определенных обстоятельствах, однако в большинстве случаев, вы должны держаться подальше от них, потому что не все браузеры их поддерживают.
XMLHttpRequest содержит ряд свойств, которые предоставляют информацию или результаты по просьбе. Большинство из свойств, говорят сами за себя; Вы просто прочитать значение и действовать по нему. В по * свойства случае погрузчиков, которые используются функции назначения им. Список всех свойств следующим образом:
Примечание
Mozilla сбрасывает событие погрузчиков, как onreadystatechange, после запроса будет завершена, поэтому вам нужно сбросить их, если вы выполняете несколько вызовов с тем же объектом.
В следующей таблице показаны возможные значения для readyState переменной. Он вернется ряд представляющих нынешнее состояние объекта. Каждая просьба будет осуществляться через список readyStates
| readyState Код статуса | О состоянии объекта XMLHttpRequest |
|---|---|
| (0) UNINITIALIZED | Объект был создан, но не инициализируется. (Открытый метод не называется.) |
| (1) ЗАГРУЗКА | Объект был создан, но направить метод не называется. |
| (2) LOADED | В направить метод, что называется, но статус и заголовки еще не готов. |
| (3) ИНТЕРАКТИВНЫЕ | Некоторые данные были получены. Вызов responseBody и responseText свойств в этом состоянии получить частичные результаты вернет ошибку, потому что статус и ответ заголовки не в полной мере доступны. |
| (4) ЗАВЕРШЕНА | Все данные были получены и полные данные имеются в responseBody и responseText свойствами. |
В readyState переменной и onreadystatechange случае обработчик связаны таким образом, что каждый раз, readyState переменная не изменилась, onreadystatechange случае обработчик называется.
Online: 527 users browsing the articles directory
|
|