Интеграция Flash с веб-приложениями > Обмен информацией с удаленными файлами > Использование XML объекта
Использование XML объектовВы можете использовать команды ActionScript XML объекта (например, appendChild
, removeNode
и insertBefore
) для упорядочивания XML-данных перед отправкой на сервер и для управления загруженными данными.
Вы можете использовать следующие методы XML-объекта для посылки и загрузки XML-данных на сервер, используя HTTP POST
метод:
![]() |
load загружает XML из сети и размещает его в ActionScript XML объекте. |
![]() |
send отсылает XML объект по указанному URL. Вся возвратившаяся информация помещается в другом окне броузера. |
![]() |
sendAndLoad отсылает XML объект по указанному URL. Вся возвратившаяся информация помещается в ActionScript XML объект. |
Например, можно создать брокерскую систему для торговли ценными бумагами, которая хранит всю информацию (имена пользователей, пароли, информация о транзакциях, и т.д.) в базе данных.
Серверный скрипт, который пропускает информацию между Flash и базой данных, читает и записывает данные в XML формате. Можете использовать ActionScript для конвертирования данных собранных во Flash-ролике (например, имя пользователя и пароль) в XML объект, а затем отправлять их на серверный скрипт в качестве XML документа. Так же можете использовать ActionScript для загрузки XML документа, который сервер возвращает в XML объект, используемый в ролике.
Поток и преобразование данных между Flash-роликом, серверным скриптом и базой данных.
Проверка подлинности пароля для брокерской системы требует 2 скрипта: функция, определенная в первом кадре, и скрипт, который создает и отсылает объекты XML, нажатием кнопки Submit в форме.
Когда пользователи вводят информацию в текстовые поля в Flash-ролике в переменные username
и password
, перед отправкой на сервер эти переменные должны быть сконвертированы в XML. Первая секция скрипта загружает переменные в только что созданный XML объект, который называется loginXML
. Когда пользователь нажимает кнопку Submit, объект loginXML
конвертируется в XML строку и отсылается на сервер.
Следующий скрипт прописывается в кнопку Submit. Для облегчения понимания, в скрипт вставлены комментарии начинающиеся с символов //
:
on (release) {
// A. Конструируем XML документ с элементом LOGIN
loginXML = new XML();
loginElement = loginXML.createElement("LOGIN");
loginElement.attributes.username = username;
loginElement.attributes.password = password;
loginXML.appendChild
(loginElement);
// B. Конструируем XML объект для сбора информации полученной от сервера
loginReplyXML = new XML();
loginReplyXML.onLoad = onLoginReply;
// C. Отсылаем элемент LOGIN на сервер,
// помещаем ответ в loginReplyXML
loginXML.sendandLoad("https://www.imexstocks.com/main.cgi",
loginReplyXML);
}
Первая секция скрипта генерирует следующий XML, когда пользователь нажимает кнопку Submit:
<LOGIN USERNAME="JeanSmith" PASSWORD="VerySecret" />
Сервер получает XML, создает XML ответ и посылает его обратно в ролик. Если пароль верен, то сервер ответит следующим образом:
<LOGINREPLY STATUS="OK" SESSION="rnr6f7vkj2oe14m7jkkycilb" />
Этот XML включает параметр SESSION
, который содержит случайно генерируемый ID сессии, используемый во всех последующих соединениях между клиентом и сервером до конца сессии. Если пароль неверный сервер выдает следующее сообщение:
<LOGINREPLY STATUS="FAILED" />
XML узел (XML node) LOGINREPLY должен быть загружен в чистый XML объект в ролике. Следующие строчки создают XML-объект loginreplyXML
чтобы получить XML узел:
// B. Конструируем XML объект для сбора информации полученной от сервера loginReplyXML = new XML(); loginReplyXML.onLoad = onLoginReply;
Вторая часть назначает функцию onLoginReply
обработчику loginReplyXML.onLoad
.
XML-элемент LOGINREPLY
появляется асинхронно, как данные из команды loadVariables и загружается в loginReplyXML
объект. Когда данные прибывают, вызывается метод onLoad
объекта loginReplyXML
. Вы должны определить функцию onLoginReply
и назначить ее обработчику loginReplyXML
.onLoad, чтобы он мог обработать элемент LOGINREPLY
. Функция onLoginReply
назначается на фрейм, который содержит кнопку Submit.
Функция onLoginReply
вызывается в первом кадре ролика.
function onLoginReply() { // Получаем первый XML элемент var e = this.firstChild; // Если первый XML элемент это LOGINREPLY со статусом OK, // переходим к экрану "portfolio". В противном случае, // оповещаем посетителя, что пароль ему отгадать не удалось // и предоставляем ему еще одну попытку . // Кстати хотел бы я посмотреть на сайт с запароленным разделом // "portfolio" :) if (e.nodeName == "LOGINREPLY" && e.attributes.status == "OK") { // Сохраняем ID сессии для дальнейшего общения с сервером sessionID = e.attributes.session; // переходим к экрану просмотра "portfolio" gotoAndStop("portfolioView"); } else { // Опс :) Пароль не угадан! Переходим к метке "loginFailed" gotoAndStop("loginFailed"); } }
Первая строка этой функции, var e = this.firstChild
использует ключевое слово this
чтобы обратиться к XML-объекту loginReplyXML
, который только что был загружен с сервера. Вы можете использовать this
потому, что onLoginReply
был вызван как loginReplyXML.onLoad
, так что хотя onLoginReply
кажется вроде бы простой функцией, он фактически ведет себя как метод loginReplyXML
.
Чтобы послать username
и password
как XML на сервер и загрузить XML ответ назад в ролик, можно использовать метод sendAndLoad
, например как в этом примере:
// C. Отсылаем элемент LOGIN на сервер, // помещаем ответ в loginReplyXML loginXML.sendandLoad("https://www.imexstocks.com/main.cgi", loginReplyXML);
Дополнительная информация о методах XML имеется в словаре ActionScript.
ПРИМЕЧАНИЕ: Эти примеры очень просты, мы не даем никаких гарантий об уровне защиты, который они предоставляют. Если вы создаете охранную систему, сначала удостоверьтесь что у вас хороший уровень знаний о сетевой безопасности прежде чем создавать её!