Добавляем...


Изображения
Наиболее часто используемыми для односторонней коммуникации носителями являются изображения. При этом даже не приходится внедрять <img> в страницу (вообще говоря, лучше этого не делать). Поскольку нашим намерением не является загрузка или демонстрация изображений, можно создать объект Image, использовать его, а затем удалить. Рассмотрим следующий фрагмент документа:

<script type="text/javascript">
var commandURL = "http://demos.javascriptref.com/setrating.php?";
function sendURL(url)
(
var img = new Image(); img.src = url;
}
function sendRating(productid, rating, user)
var params = "productid=" + productid; params += "&rating=" + rating; params += "&user=" + user;
sendURL(commandURL + params); return false;
}
</script>
<!-- ... -->
Оцените этот продукт:
<form action="#" method="get">
<input type="button" value="Кошмар!" onclick="return sendRating(2158, 1, 'Иван');" />
<input type="button" value="HopMa" onclick="return sendRating(2158, 2, 'Иван');" />
<input type="button" value="Высший класс!" onclick="return sendRating(2158, 3, 'Иван');" />
</form>

Мы не приводим здесь сценарий сервера, который, должен обработать соответ-ствующий запрос. Можно было бы, например, создать для этого простую CGI-npo-цедуру, возвращающую изображение, состоящее из одного пикселя, или возвратить любое содержимое. Поскольку дальнейшее использование возвращаемого значения не предполагается, нас даже не волнует то, что сервер может возвратить ошибку. На самом деле даже не требуется иметь setrating.cgi для обработки запроса. Можно просто позволить серверу возвратить 404 и извлечь соответствующую информацию из журнала регистрации событий. В результате указанных запросов создаются строки журнала, подобные следующим:

www.example.com - - [19/Маг/2004:21:05:29 -0800] "GET /setrating.cgi?productid=2158&rating=l&user=fritz HTTP/1.0" 403 305

Очень просто создать сценарий, фильтрующий строки журнала регистрации событий, анализирующий их и обрабатывающий необходимую информацию (например, добавляя ее в базу данных).
Замечание. В предыдущем примере совсем не обязательно передавать пользовательскую ин-формацию посредством параметров CGI. Если для аутентификации вы используете файл cookie, то вместе с запросом серверу отправляется и этот файл, так что сценарий сервера может извлечь информацию о пользователе из файла cookie.

Более элегантный подход может предполагать наличие программы сервера для записи данных и последующей передачи ответа браузеру. В данном случае, чтобы со-общить браузеру о том, что ничего не потеряно, можно возвратить HTTP-ответ 204, указывающий на отсутствие содержимого. Это выглядит более аккуратным, но на самом деле это делать совсем не обязательно. И не бросайтесь бездумно использовать HTTP - здесь имеются существенные моменты, которые обязательно следует учесть.

Кодирование параметров

Некоторые символы в адресах URL использовать не допускается, и Web-серверы часто "возмущаются", если такие символы используются. Например, в адресе URL не должно быть символов возврата каретки. Если параметры, которые необходимо передать серверу, могут содержать символы, порождающие проблемы, эти символы следует кодировать. При кодировании проблемные символы заменяются их значениями ASCII в виде шестнадцатеричной управляющей последовательности. Например, вместо символа перехода на новую строку используется %0D. Web-сервер автоматически декодирует адреса URL и делает декодированные параметры доступными для CGI-процедур и других объектов.
Чтобы кодировать строку, просто примените к ней encode(). С учетом этого можно переписать программный код установки параметров из предыдущего примера:

var params = "productid=" + encode(productid);
params += "&rating=" + encode(rating);
params += "&user=" + encode(user);

Почти всегда кодирование параметров является прекрасной идеей, даже если вы уверены, что появление проблемных символов в соответствующем наборе практически невозможно.

Другие объекты

Нет иной причины использовать только объекты Image для RPC-запросов указан-ного вида, кроме той, что это широко распространенная практика и соответствующие объекты легко использовать в сценарии. Здесь годится любой элемент (X)HTML, име-ющий свойство, значением которого может быть адрес URL. Общераспространенным вариантом является использование для коммуникаций скрытого элемента <ifгame>. Каждый раз, когда требуется направить сообщение серверу, следует установить для src элемента <iframe> значение, соответствующее адресу URL сообщения. Мы увидим в одном из следующих разделов, что <iframe> чаще используются для двухстороннего обмена.
назад:
далее:


добавить комментарий
(без перезагрузки и регистрации)


10 случайных разделов

Что ищем на сайте ?


Примеры кода на сайте







@ 2008-2011 Amber
При использовании материалов ссылка на сайт обязательна
Яндекс.Метрика