JavaScript и объекта XMLHttpRequest, история, стандарты, примеры
Опубликованно 09.01.2019 04:55
Запросы XMLHttpRequest (XHR-запрос) - это объект API, предоставляемых среде JavaScript в браузере. В частности, данные поиска из XHR-запрос с целью изменения веб-страницы-это основная концепция дизайна "Аякса". Несмотря на название, технология XHR можно использовать протоколы, отличные от HTTP, и данные могут быть в виде не только XML, но и в формате JSON, HTML или обычный текст. WHATWG как средство поддерживает то XHR. Текущая работа в W3C, чтобы создать стабильный спецификация на основе снимков стандарта WHATWG как средство.
В JavaScript изначально запрос был объект ActiveX, его использование было ограничено интрасетей на основе Microsoft и не подходит для других сайтов. Команда Mozilla заинтересована в реализации в JScript эквивалент и распространил его среди всех браузерах, включая те, что работают на Gecko / ХТМЛ, и опера. Даже ИЕ7 уже не требует установки ActiveX, чтобы использовать то XHR. История Объекта XMLHttpRequest
Концепция JavaScript и XMLHttpRequest, который был создан специалистами веб-клиента Outlook для использования в Microsoft Exchange 2000 сервер. Версий 5 и 6 не определяют используем XHR-объект, идентификатор в свои скриптовые языки, как идентификатор запроса не было на момент релиза. Microsoft добавила идентификатор объекта в его языках сценариев в Internet Explorer версии 7.0 выпущен в октябре 2006 года. В браузере проекта был разработан и реализован интерфейс JavaScript для XMLHttpRequest в механизм раскладки Гекко.
Он был смоделирован таким образом, чтобы быть похожими на интерфейс Майкрософт запросу. В Mozilla создали оболочку для использования этого интерфейса через JS-объект, который был назван объекта XMLHttpRequest. Объект уже доступны в Gecko вышла версия 0.6 на 6 декабря 2000 года, но он еще не был полностью функциональным до тех пор, пока 5 июня 2002 года не выпустил версию 1.0 Гекко, после чего ID объекта стала стандартом де-факто в других крупных веб-систем: Сафари 1.2 выпущен в феврале 2004 года. Опера 8.0 выпущена в апреле 2005 года. iCab 3.0b352, выпущенный в сентябре 2005 года.
С появлением кросс-браузер JavaScript-библиотеки, такие как jQuery, разработчики могут вызывать функции объекта XMLHttpRequest в JavaScript без кодирования напрямую к API. Консорциум "всемирная паутина" опубликовал проект спецификации для объекта XMLHttpRequest 5 апреля 2006 года, с целью документирования минимальный набор взаимодействующих объектов на основе существующих реализаций, что позволяет разработчикам использовать код без платформы.
25 февраля 2008 года консорциум W3C опубликовал проект спецификации на рабочем уровне с XMLHttpRequest 2. Уровень 2 состоит из расширенной функциональностью, включая поддержку для запросов и обработки байтовых потоков. Идентификатор объекта стандартам
В качестве стандарта W3C XMLHttpRequest-объекта в JavaScript пост по-прежнему является предварительным вариантом, агенты пользователей могут не соблюдать все определения функций, и любое последующее действие может быть изменен. Крайнюю осторожность следует учитывать при написании скрипта с объектом XMLHttpRequest для нескольких агентов пользователя.
В HTTP и HTTPS-запросы XMLHttpRequest-объекта инициализируются открытым способом. Это называется до фактического запрос на проверку. Этот метод не гарантирует, что URL-адрес существует, и информация пользователя является правильным. Это может занять до пяти параметров, но для инициализации запроса требуется только два. Первый параметр-текстовую строку. Нынешние методы запросов, которые должны быть подтверждены соответствующими агента пользователя, определенные W3C по проекту для объекта XMLHttpRequest в JavaScript. Примеры: Вам поддерживаются Internet Explorer версии 7, браузер Mozilla. Пост поддерживаемых IE7 и Mozilla. Голова поддерживается ИЕ7.
Методы запросов не ограничиваются перечисленными выше. Консорциум W3C проекте отмечается, что браузер может поддерживать их по своему усмотрению.
Второй параметр-это еще одна текстовая строка, которая задает URL-адрес http-запроса.
Третий параметр-это логическое значение, которое указывает, является ли запрос асинхронным. Это не требуется для проекта консорциумом W3C. Его значение по умолчанию должно быть верно с соответствующим агента пользователя консорциумом W3C.
Асинхронный запрос "Правды" не будет ждать ответа сервера до продолжения выполнения текущего скрипта. Вместо этого, он будет вызвать у слушателя события внутренний для объекта XMLHttpRequest в JavaScript пост на разных этапах запросу.
Четвертый и пятый параметры имя пользователя и пароль. Эти опции могут быть предоставлены для проверки подлинности и авторизации, если этого требует сервер. Метод Добавляет
После успешной инициализации вы можете позвонить в заголовке объект XMLHttpRequest открытых JavaScript, чтобы отправить HTTP-заголовки запроса. Первый параметр метода-это имя заголовка. Второй параметр является значением текстовой строки. Этот метод следует использовать для каждого заголовка, который отправляется с просьбой.
Скрытая "жемчужина" в XMLHttpRequest стандарт, который упрощает процесс отбора и анализа данных в формате JSON через AJAX, это JSON и JSON с-п. распространенный способ предложить сервер данных для браузеров, чтобы использовать JavaScript на стороне клиента, форматирование данных, таких как JSON и получить к нему доступ через собственный URL-адрес. Пример: JavaScript И JSON С Помощью XMLHttpRequest
Чтобы отправить HTTP-запрос, необходимо вызвать метод send объекта XMLHttpRequest.
В Firefox 3.0.X и более ранних версиях бросать исключение, если отправить вызывается без аргумента. Если этот параметр является объектом документа на дом, то агент пользователя должен засвидетельствовать, что он превращается в хорошо сформированный XML.
Если в заголовке запроса контент-тип не был добавлен через добавляет, оно должно быть автоматически добавлена к соответствующему агента пользователя в данном законе: "приложение / XML; кодировка = кодировка", где кодировка кодировка документа. Если агент пользователя настроена на использование прокси-сервера, объект XMLHttpRequest изменений просьбой выслать Прокси-авторизации заголовки настроены. Изменение состояния то XHR
Если метод был успешно вызван, свойства объекта XMLHttpRequest, который будет установлен в 1 (Открыть). После заголовков HTTP-ответа были получены, readyState свойство объект XHR присваивается значение 2 (HEADERS_RECEIVED). После загрузки содержимое HTTP-ответа readyState свойство объект XHR должно быть присвоено значение 3 (погрузка).
После завершения загрузки HTTP-ответа readyState свойство объект XHR должно быть присвоено значение 4 (сделано). Слушатель будет реагировать только на изменения, происходящие после его определения. Для выявления состояния 1 и 2, слушателя должна быть определена перед вызовом метода Open. Открытый метод должен быть применен для отправки вызова.
Этот метод прерывает запрос, если объект объект XHR, в зависимости еще не стала 4 (сделано). Метод abort гарантирует, что обработчик не будет вызван во время асинхронного запроса. Некоторые библиотеки AJAX использовать abort, чтобы отменить возможные повторяющиеся или повреждены запросы. Кросс-доменные запросы
В истории раннего развития в Сети было обнаружено, что может поставить под угрозу безопасность пользователей с помощью JavaScript по обмену информацией с одного сайта на другой, менее авторитетный. Поэтому все современные браузеры реализуют ту же политику происхождения, которая предотвращает многие атаки, такие как межсайтовый скриптинг.
Данных JavaScript и объекта XMLHttpRequest события onload подпадающим под действие этой политики безопасности, но иногда веб-разработчики хотят намеренно обойти ограничения. Это объясняется законное использование поддоменов, с момента создания XHR-запрос со страницы генерируется foo.example.com получить от него информацию bar.example.com как правило, не удается.
Существуют различные альтернативы, которые могут обойти эту функцию безопасности, включая применение JSONP, совместного использования ресурсов (CORS) или альтернативы с помощью плагинов, таких как Flash или Silverlight. Программ в браузерах
Инициализация объект XHR-это на самом деле довольно проста, в большинстве браузеров, но для поддержки несовременно 5 и 6 нужно обслуживать несколько различных методов, поэтому процесс выглядит так сложно. В принципе, скрипт пытается последовательно использовать три различных метода до тех пор, пока он успешен или заканчивается.
LoadXMLDoc функция принимает два параметра. Первым из них является расположение скрипта на стороне сервера, и другие переменные, которые должны быть переданы в этот сценарий.
Это краткий пример, как вызвать скрипт. Он использует скрипт находится в /scripts/myscript.php с двумя вам параметры (Q и целевой). Рекомендуется для кодировки значения с помощью encodeURIComponent. Post вместо get
Чтобы передать объем данных сервера больше, чем 512 байт, вы должны использовать POST или new XMLHttpRequest-объекта в JavaScript JavaScript и XML вместо 34 вам. Если вы хотите разместить данные, вам нужно изменить тип MIME запрос с помощью контент-тип заголовка и передача переменных отправки вызова. Заключительная часть loadXMLDoc функция изменения, как показано на фото ниже.
В большинстве случаев, третий параметр команды может быть остановлен. Значение true указывает на то, что вызов должен быть асинхронным, скрипт продолжает, не дождавшись ответа XML, который уже доступен по умолчанию. Передавая значение false останавливает скрипт до получения ответа.
Сценарий, на который ссылается url, скрипт на стороне сервера (на php, perl или подобных). Он возвращает XML-документа. Чтобы избежать предупреждения безопасности браузера, он должен быть размещен в том же домене, что и вызывающий страницы, и быть доступен через HTTP или https. Перевод с JavaScript на стороне сервера скрипт
Функция, которая обрабатывает ответ (например, processReqChange) должны быть в состоянии распаковать и обработать полученный XML. Эта диаграмма показывает, как данные передаются с JavaScript на стороне сервера скрипт снова и снова.
Принцип достаточно прост. Возвращаемый XML-документ будет содержать одну или несколько команд, которые выполняются последовательно для создания предупреждений, чтобы изменить значения форма, или дом. Все это делается с помощью функции processReqChange. Доступные команды
Всего используется семь различных команд, которые могут быть вызваны на объект библиотека: уведомление (сообщение) показывают JavaScript оповещения. метод setValue (цель, значение) установить значение поля формы с ID от цели. значение setdefault (цель) - сбросить значение поля формы. фокус (цель) – установить фокус на поле формы. setcontent (цель, содержание) - установить внутренний HTML-код HTML-элемента. метод setstyle (цель, свойство, значение) задать стиль элемента HTML. методов-setproperty (цель, свойство, значение) установить свойства элемента HTML.
В каждом случае, цель-это идентификатор, ссылающийся на элемент в HTML-страницу. Другие значения текста или HTML, чтобы добавить дополнительные параметры функции processReqChange. Генерация XML-ответ с помощью PHP
Функция предназначена для PHP-программистов, которые не хотят знать слишком много о JavaScript, потому что после отправки первоначального запроса дальнейшего JScript не требуется. XML-файл (он генерирует предупреждающее сообщение, например, при нажатии на ссылку ниже, создает окно оповещения JS с текстом "Привет мир!") это важный первый шаг в любом языке программирования.
Следующий XML-ответ будет загрузить текст в элементе на странице. В данном случае, вывод, который имеет идентификационный номер 2 будет отображаться в div. Вместо div, вы можете легко установить содержание заголовка, параграфа или ячейки таблицы: Пример 2 Всем привет.
Как уже упоминалось ранее, вы можете вставить HTML, а не текст, и вернуть динамические, а не статические данные. Следующий XML-запрос генерируется с помощью PHP, чтобы вставить текущую дату и время.
Интернет Эксплорер будет кэшировать XML-ответ и использовать его для будущих запросов. Это означает, что выход не изменится. Другие браузеры каждый раз вызывать новый запрос.
Всех браузерах, которые поддерживают свойство backgroundColor дом принять, потому что имя стиля имеет цвет фона, который является более "правильным" и работает только в некоторых из них. Значения могут быть сгенерированы на лету с помощью PHP или другом сервере. Первая команда задает цвет фона собственность в окно Привет мир на желтый (# ff0 до), а вторая-в случайном порядке (красный, зеленый или синий). Команда в основном связано с образованием поля - установить / сбросить значение в поле и установить фокус. Они полезны при проверке серверных форме в режиме реального времени, когда вы хотите просматривать данные без перезагрузки текущей страницы. Создать XML с помощью JavaScript
Есть несколько различных способов, чтобы вызвать функцию loadXMLDoc. Например, ссылка на форму в качестве первого параметра, а затем две дополнительные переменные.
Успешного вызова loadXMLDoc возвращает значение "true". В OnSubmit обработчик вернет false. Отменяем действие по умолчанию, это будет настоящее событие, которое в противном случае будет форма. Дальнейшая работа происходит через AJAX, так что в браузере не нужно загружать новую страницу. Плохо loadXMLDoc вызов возвращает значение false. В OnSubmit обработчик вернет true, в результате форма будет отправлена, как правило. Исполнение проходит через nonAjaxTarget.html.
Выполняет функцию предотвращения кэширования значений отклика на JavaScript cookie в запрос. Некоторые браузеры кэшируют запросы, сделанные с помощью XHR на после первого звонка, последующей под копирку просто перезагружается первый ответ. Чтобы обойти это, вы должны добавить случайную строку или времени на запрос, как показано на фото ниже:
Если скрипт всегда возвращает один и тот же ответ на заданные параметры, нет необходимости беспокоиться об этом, так как он использует кэширование для ускорения приложений.
В итоге, насколько легко работать с AJAX, используя эту структуру, вам нужно всего лишь сделать следующее: Чтобы настроить скрипт на стороне сервера, чтобы принять параметры, GET или POST или cookie-файлы и вернуть допустимый XML-файл. Чтобы указать файл xmlhttp.js JS на странице. Использование JavaScript для вызова.
Обратные вызовы AJAX может быть выполнено путем создания экземпляра объекта XHR и в клиентских сценариев JScript. JavaScript и объекта XMLHttpRequest вам могут быть использованы для прямого вызова серверных объектов, таких как страницы и web-сервисов. Они будут сохранять или возвращать данные.
Аякс был первоначально акронимом для асинхронный JS и XML-код. "Асинхронный" означает, что некоторые события происходят независимо друг от друга. Как только клиент initialisere обратный вызов AJAX на сервер, не надо ждать ответа, как он может продолжать использовать веб-приложения при обработке запроса. После этого, сервер будет отправлять ответ клиенту, и в процессе его по мере необходимости. Автор: Иван Фролов 27 ноября 2018
Категория: Hi-Tech