русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

HTTP_метод POST


Дата добавления: 2015-07-09; просмотров: 518; Нарушение авторских прав


 

HTML_формы по умолчанию отправляются на сервер методом POST. При выпол_ нении запроса POST данные передаются на сервер в теле запроса, а не в строке URL_адреса. Поскольку параметры запроса в методе GET приходится вставлять в URL, метод GET пригоден только для случаев, когда запрос не вызывает побоч_ ных эффектов на стороне сервера, т, е. когда повторные запросы GET с тем же са_ мым URL_адресом и с теми же параметрами приводят к получению тех же самых результатов. Если запрос сопровождается побочными эффектами (например, сервер сохраняет некоторые из параметров в базе данных), должен использо_ ваться запрос POST.

 

Пример 20.5 демонстрирует порядок выполнения запросов POST с помощью объекта XMLHttpRequest. Метод HTTP.post() вызывает функцию HTTP.encodeForm_ Data() для преобразования свойств объекта в строковую форму, которая может использоваться в качестве тела запроса POST. Затем полученная строка передает_ ся методу XMLHttpRequest.send() и становится телом запроса. (Кроме того, строка, созданная с помощью функции HTTP.encodeFormData(), может добавляться в URL_ адрес метода GET; достаточно лишь отделить URL_адрес и данные символом во_ просительного знака.) Помимо этого в примере 20.5 используется метод HTTP._getResponse(). Данный метод анализирует ответ сервера на основе его типа. Реализация этого метода приводится в следующем разделе.

 

Пример 20.5. Вспомогательная функция HTTP.post()

/**

* Отправляет HTTP_запрос POST по указанному URL_адресу,

* используя имена и значения свойств объекта в качестве тела запроса.

* Анализирует ответ сервера на основе его типа и передает

* полученное значение функции обратного вызова.

* В случае появления HTTP_ошибки вызывает заданную

* функцию errorHandler или передает значение null

* функции обратного вызова, если обработчик ошибок не определен.



**/

 

HTTP.post = function(url, values, callback, errorHandler) { var request = HTTP.newRequest(); request.onreadystatechange = function() {

 

if (request.readyState == 4) { if (request.status == 200) {

callback(HTTP._getResponse(request));

}

else {


 

20.2. Примеры и утилиты с объектом XMLHttpRequest
   

 

if (errorHandler) errorHandler(request.status, request.statusText);

else callback(null);

}

}

}

request.open("POST", url);

 

// Этот заголовок сообщает серверу, как интерпретировать тело запроса. request.setRequestHeader("Content_Type",

"application/x_www_form_urlencoded");

// Вставить в тело запроса имена и значения свойств объекта

 

// и отправить их в теле запроса. request.send(HTTP.encodeFormData(values));

};

/**

* Интерпретирует имена и значения свойств объекта, как если бы они были

 

* значениями элементов формы, использует формат application/x_www_form_urlencoded */

 

HTTP.encodeFormData = function(data) { var pairs = [];

 

var regexp = /%20/g; // Регулярное выражение, соответствующее закодированному пробелу for(var name in data) {

var value = data[name].toString();

// Создать пару имя/значение, но сначала имя и значение закодировать.

// Практически все, что нам требуется, выполняет глобальная функция

 

// encodeURIComponent, но она превращает пробелы в виде %20 вместо

 

// требуемого нам "+". Исправить это можно с помощью String.replace() var pair = encodeURIComponent(name).replace(regexp,"+") + '=' +

 

encodeURIComponent(value).replace(regexp,"+"); pairs.push(pair);

}

 

// Объединить все пары в строку, разделяя их символами & return pairs.join('&');

};

 

Еще один вариант выполнения запроса POST с помощью объекта XMLHttpRequest приводится в примере 21.14. Код в этом примере вызывает веб_службу, но вме_ сто значений элементов формы в теле запроса передает XML_документ.

 



<== предыдущая лекция | следующая лекция ==>
Получение только заголовков | Ответы в форматах HTML, XML и JSON


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 0.477 сек.