Серверный JavaScript 1.4. Руководство по использованию

       

Присоединение Свойств Объекта client к URL Вручную


При использовании кодирования URL на клиенте или на сервере для работы с объектом client машина выполнения обычно должна сохранять соответствующую информацию (имена и значения свойств объекта client или индекс серверной структуры данных) во всех URL, высылаемых клиенту, вне зависимости от того, являются ли эти URL как статический HTML или были сгенерированы операторами серверного JavaScript.

Машина выполнения автоматически присоединяет соответствующую информацию к гиперссылкам HTML, находящимся вне тэгов SERVER. Так, например, предположим, что Ваша HTML-страница содержит следующие операторы:

<HTML>
For more information, contact

<A HREF="http://royalairways.com/contact_info.html">
Royal Airways</a>
...

</HTML>

Если приложение использует кодирование URL для объекта client, машина выполнения автоматически присоединит client -информацию в конец URL. Вы не должны ничего делать специально для поддержки этого поведения.

Однако ваше приложение может использовать функцию write для динамической генерации оператора HTML, содержащего URL. Вы можете также использовать функцию redirect для старта нового запроса. Когда Вы используете операторы серверного JavaScript для добавления URL к генерируемой HTML-странице, машина выполнения предполагает, что Вы специфицировали полный URL для отправки в нужном Вам виде. Она не присоединяет автоматически клиентскую информацию даже при использовании кодирования URL для работы с объектом client. Если Вам нужно присоединить клиентскую информацию, Вы обязаны сделать это сами.

Вы используете функцию addClient для добавления вручную соответствующей client -информации. Эта функция принимает URL и возвращает новый URL с присоединённой информацией. Например, предположим, что контактный URL варьируется в зависимости от значения свойства client.contact. Вместо вышеприведённого HTML Вы можете ввести следующее:

<HTML>
For more information, contact
<server>

if (client.contact == "VIP") {
write ("<A HREF='http://royalairways.com/vip_contact_info.html'>");


   write ("Royal Airways VIP Contact</a>");
}
else {

   write ("<A HREF='http://royalairways.com/contact_info.html'>");



   write ("Royal Airways</a>");
}
</server>
...
</HTML>

Теперь машина выполнения не присоединяет свойства объекта client к URL. Если Вы используете один из видов техники кодирования URL для работы с объектом client, может возникнуть проблема. Тогда, если Вы хотите отправить свойства объекта client с этим URL, используйте такой код:

<HTML>
For more information, contact
<server>

if (client.contact == "VIP") {
   write (addClient(

      "<A HREF='http://royalairways.com/vip_contact_info.html'>"));

   write ("Royal Airways VIP Contact</a>");
}
else {

   write (addClient(
       "<A HREF='http://royalairways.com/contact_info.html'>"));

   write ("Royal Airways</a>");
}
</server>
...
</HTML>

Также всякий раз, когда Вы применяете функцию redirect для перенаправления клиентского запроса, Вы должны использовать addClient для присоединения информации, как здесь:

redirect(addClient("mypage.html"));

В противоположность этому, если Ваша страница имеет ссылку на URL вне Вашего приложения, Вам может не понадобиться присоединение клиентской информации. Тогда не используйте статическую строку в значении атрибута HREF. Вместо этого вычисляйте значение. Это предотвратит автоматическое присоединение машиной выполнения клиентского индекса или свойств к URL. Например, у вас имеется ссылка:

<A HREF="mailto:me@royalairways.com">

В этом случае машина выполнения присоединяет клиентскую информацию. Чтобы этого не было, используйте очень похожую ссылку:

<A HREF=`"mailto:me@royalairways.com"`>

Хотя приложение первоначально инсталировано для использования техники без кодирования URL для работы с client, оно может быть позднее модифицировано для использования техники кодирования URL. Следовательно, если Ваше приложение генерирует динамические URL или использует redirect, Вам всегда нужно будет использовать addClient.


Содержание раздела