JavaScript. Подробное руководство, 6-е издание
Шрифт:
18.1.3.1. Запросы с данными в формате HTML-форм
Рассмотрим HTML-формы. Когда пользователь отправляет форму, данные в форме (имена и значения всех элементов формы) помещаются в строку и отправляются вместе с запросом. По умолчанию HTML-формы отправляются на сервер методом POST, и данные формы помещаются в тело запроса. Схема преобразования данных формы в строку относительно проста: к имени и значению каждого элемента формы применяется обычное URI-кодирование (замена специальных символов шестнадцатеричными кодами), кодированные представления имен и значений отделяются знаком равенства, а пары имя/значение - амперсандом. Представление простой формы в виде строки может выглядеть, как показано ниже:
Такой
Этот тип следует указать в заголовке «Content-Type» запроса при отправке данных такого вида в составе запроса методом POST.
Обратите внимание, что для использования такого формата представления не требуется наличие HTML-формы, и в действительности в этой главе мы не будем работать с формами непосредственно. В Ajax-приложениях чаще всего у вас будет иметься некоторый JavaScript-объект, который необходимо отправить на сервер. (Этот объект может быть создан из полей ввода HTML-формы, но в данном случае это не имеет значения.) Данные, показанные выше, могут оказаться представлением следующего JavaScript-объекта:
Формат представления данных форм настолько широко используется во Всемирной паутине и настолько хорошо поддерживается всеми языками программирования для создания серверных сценариев, что его применение для представления данных, никак не связанных с формами, часто оказывается наиболее простым и удобным. Пример 18.4 демонстрирует, как преобразовать свойства объекта в формат представления формы.
Пример 18.4. Преобразование объекта в формат для отправки в НТТР-запросе
С
Пример 18.5. Выполнение запроса HTTP POST с данными в формате представления форм
Данные формы также могут быть отправлены посредством GET-запроса, и когда цель формы состоит в том, чтобы определить параметры операции чтения, метод GET лучше соответствует назначению формы, чем метод POST. GET-запросы не имеют тела, поэтому «полезный груз» с данными формы отправляется серверу в виде строки запроса в адресе URL (следующей за знаком вопроса). Утилита
Пример 18.6. Выполнение GET-запроса с данными в формате представления форм
Для добавления данных в URL-адреса HTML-формы используют строки запросов, но использование объекта
При наличии соответствующей поддержки на сервере наш запрос на поиск пиццерии можно оформить в виде более удобочитаемого URL-адреса, такого как показано ниже:
Метатель
1. Метатель
Фантастика:
боевая фантастика
попаданцы
рпг
фэнтези
фантастика: прочее
постапокалипсис
рейтинг книги
Доктор. Заново
1. Доктор
Фантастика:
фэнтези
альтернативная история
рейтинг книги
Имперец. Том 4
3. Имперец
Фантастика:
попаданцы
альтернативная история
аниме
рейтинг книги
Смерч войны
1. Историческая библиотека
Проза:
военная проза
рейтинг книги
Справочник по лечению зависимостей
Справочная литература:
путеводители
рейтинг книги
Потомок бога 3
3. Локки
Фантастика:
аниме
фэнтези
рейтинг книги
Универсальный энциклопедический справочник
Справочная литература:
справочники
энциклопедии
рейтинг книги
Неизвестные страницы истории российского флота
Научно-образовательная:
история
военное дело: прочее
военная история
рейтинг книги
Избрание сочинения в трех томах. Том второй
Проза:
советская классическая проза
рейтинг книги
Полная история государства Российского в одном томе
Научно-образовательная:
история
рейтинг книги