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

Сохранение свойств объекта client


Машина выполнения сохраняет свойства объекта client непосредственно перед первой отправкой части HTML-страницы клиенту. Она сохраняет эти свойства только один раз. Машина выполнения может повторять шаги 3 и 5, но не может повторить данный шаг.

Машина выполнения сохраняет свойства в этот момент, чтобы поддерживать один из видов техники обслуживания объекта client. Например, схема кодирования клиентского URL высылает свойства client'а в шапке/header HTML-файла. Поскольку шапка высылается как первая часть файла, свойства client'а обязаны быть затем высланы.

Следовательно, Вы должны учитывать, где в Вашем файле-источнике устанавливаются свойства client'а. Вы всегда должны изменять свойства client'а в файле до любого вызова redirect или flush и до генерирования 64KB HTML-вывода.

Если Вы изменяете значения свойств объекта client в коде после того как HTML был выслан клиенту, эти изменения будут действовать для оставшейся части клиентского запроса, но затем будут отменены. Отсюда: следующий клиентский запрос не получит эти значения свойств; он получит значения, действовавшие в тот момент, когда содержимое было в первый раз отправлено клиенту. Например, ваш код содержит такие операторы:

<HTML>
<P>The current customer is
<SERVER>

client.customerName = "Mr. Ed";
write(client.customerName);
client.customerName = "Mr. Bill";

</SERVER><P>The current customer really is
<SERVER>

write(client.customerName);
</SERVER>
</HTML>

Эта серия операторов даст в результате такой HTML, отправляемый клиенту:

<P>The current customer is Mr. Ed
<P>The current customer really is Mr. Bill

Теперь, когда появится следующий клиентский запрос, значение свойства client.customerName будет "Mr. Bill". Этот очень похожий набор операторов даст в результате тот же HTML:

<HTML>
<P>The current customer is

<SERVER>
client.customerName = "Mr. Ed";
write(client.customerName);
flush();

client.customerName = "Mr. Bill";
</SERVER>
<P>The current customer really is

<SERVER>
write(client.customerName);
</SERVER>
</HTML>

Однако при появлении следующего клиентского запроса значение client.customerName будет "Mr. Ed"; а не "Mr. Bill".

Дополнительно см. .



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