На равне с приемом переменных, функция l oadVariables()также может передавать переменные в сценарий на стороне сервера. Чтобы отправить в сценарий все переменные, определенные в текущей временной диаграмме, аргумент method при вызове функции loadVariables()задается равным " GET " или " POST ". Переменные пересылаются в формате кодировки URL.
Если method задан как " GET ", переменные передаются как строка запроса в URL сценария.
Если method установлен как " POST ", переменные посылаются после заголовка HTTP POST.
Т.к. для большинства веб-серверов максимальная длина URL лежит между 255 и 1024 символами, при передаче больших объемов данных используйте " POST ", а не " GET ".
Из соображений безопасности loadVariables()действует только с хостами домена, из которого был загружен фильм. Правила, которым подчиняется loadVariables(), перечислены в следующей таблице.
Эти меры безопасности оказывают воздействие только на подключаемые модули и на элементы ActiveX браузера Flash Player; автономный проигрыватель может загружать переменные из любого домена.
Ограничения на домены являются умышленной защитной функцией во Flash, но их можно обойти с помощью прокси-сценария, выполняемого на сайте X, действующего как посредник между Flash и сайтом Y, или псевдонима DNS на сайте X, который указывает на сайт Y. Дополнительную информацию по данному вопросу можно получить по адресу: http://www.macromedia.com/support/flash/ts/documents/loadvars_security.htm.
Результаты многократных обращений loadVariables()по одному и тому же URL сценария могут некоторыми браузерами кэшироваться, в результате чего новые данные с сервера не загружаются. Чтобы избежать этой проблемы, добавляйте в каждый вызов loadVariables()фиктивную переменную, чтобы URL оказался уникальным.
Пример:Генерация уникального URL.
loadVariables("http://www.mysite.ru/myScript.php?var=" + getTimer(), serverResponse);
Использование обработчика события data с функцией loadVariables().
Если у сервера запрашивается ряд переменных с помощью функции loadVariables(), необходимо дождаться их полной загрузки, прежде чем использовать содержащиеся в них данные.
Когда клип получает всю группу загружаемых переменных, генерируется событие data , которое указывает, что можно выполнять код, зависящий от этих переменных.
Допустим, например, что имеется фильм гостевой книги, в которую пользователи вводят свои комментарии, а эти комментарии сохраняются на сервере. Если пользователь хочет просмотреть комментарий, тот запрашивается с сервера с помощью loadVariables(). Но прежде чем начать вывод комментария, необходимо сделать остановку на экране загрузки, пока не станет известно, что запрошенные данные доступны. Обработчик события data извещает о том, что данные загружены, после чего можно вывести комментарий пользователю.
В нижеприведенном примере приведен отрывок кода гостевой книги, показывающий использование обработчика события data с функцией loadVariables(). В этом примере есть кнопка, с помощью которой две переменные в кодировке URL загружаются из текстового файла в клип. В клипе имеется обработчик события data , который выполняется, когда эти две переменные загружены. Обработчик отображает значения этих двух переменных. Безопасность вывода этих двух переменных гарантируется тем, что код обработчика выполняется только при генерации события data (т.е. после получения данных).
Пример:Ожидание события data.
// Содержимое файла guest.txtname=Jon&message=hello// Кнопка внутри клипаon (release) { this.loadVariables("guest.txt");}// Обработчик в клипеonClipEvent (data) { trace(name); trace(message);}
Ошибки в реализации:
Метод POST не поддерживается в Internet Explorer 4.5 для Macintosh. Эта проблема была исправлена в версии 5 браузера.
Совместимость:
Используется с 4-ой версии Flash
loadVariablesNum - Прикрепляет группу внешних переменных к уровню документа
loadVariablesNum
( Глобальная функция )
Прикрепляет группу внешних переменных к уровню документа
Синтаксис:
loadVariablesNum (url, level); loadVariablesNum (url, level, method);
Аргументы:
Функция loadVariablesNum()почти идентична loadVariables(), но требует задания целевого level как числа, а не как строки. Это значит, что loadVariablesNum()может прикреплять переменные только к уровням документов, а не к клипам. Целевой уровень можно задавать динамически.
Примеры
Пример:Задание целевого уровня динамически.
Читать дальше