PDA

Просмотр полной версии : Проблема с выводом переменной LoadVars в TextArea


Dark Wand
19.10.2009, 22:39
Благодаря Поиску по форуму нашел решение для чтения PHP файла, но не смог вывести получаемое значение в TextArea.

Скрипт запрашивает данные с URL:
var my_lv:LoadVars = new LoadVars();
my_lv.onLoad = function(success:Boolean) {
if (success) {
trace(this.toString());
} else {
trace("Ошибка в загрузке / разборе результирующей строки.");
}
};
my_lv.load("http://info.radiostyle.ru/inc/getinfo.php?getcurentsong=157&mount=paraplanradio");

На выходе в Output получаю желаемую переменную (значение постоянно меняется!):
%20Den%20Haan%20%2D%20Primitive%20Walk%20Mix%20=&onLoad=%5Btype%20Function%5D

Мне необходимо выводить в TextArea надпись формата: Den Haan - Primitive Walk Mix

Помогите советом, пожалуйста

Kuruki
19.10.2009, 22:56
var my_lv:LoadVars = new LoadVars();
my_lv.onLoad = function(success:Boolean) {
if (success) {
for (var variable:String in this)
{
trace(variable + ': ' + this[variable]);
// где variable - имя переменной
// this[variable] - ее значение
}
} else {
trace("Ошибка в загрузке / разборе результирующей строки.");
}
};
my_lv.load("http://info.radiostyle.ru/inc/getinfo.php?getcurentsong=157&mount=paraplanradio");

Dark Wand
19.10.2009, 23:02
Kuruki,

Спасибо, в переменную variable получаю Значение без "%20". Но как мне записать это в TextArea?

Kuruki
19.10.2009, 23:09
ta.text = variable;

Dark Wand
19.10.2009, 23:19
ta.text = variable;

Угу, я тоже так пробывал. Создаю TextArea, делаю Dynamic Text и присваиваю имя "ta"

ta.text = variable;

Но получаю в поле слово: undefined

Kuruki
19.10.2009, 23:27
В момент присвоения данные с сервера еще не загрузились.

Dark Wand
19.10.2009, 23:52
В момент присвоения данные с сервера еще не загрузились.

Посмотрел, что проблема довольно распространенная. Получается что без отгрузки данных (в txt например) синхронности я не добьюсь? И тайм-аут в предлоудере мне не поможет?((((

Kuruki
20.10.2009, 00:08
у вас переменные уже под носом... посмотрите где вы трэйс разместили. Почему он "видит" переменные? Включите мозг

Dark Wand
20.10.2009, 00:43
у вас переменные уже под носом... посмотрите где вы трэйс разместили. Почему он "видит" переменные? Включите мозг

Честно пытался разобраться и результата не добился. Если не сильно раздражаю своей недалекостью, то подскажите решение, пожалуйста.

Kuruki
20.10.2009, 01:11
LoadVars.onLoad
Доступность
Flash Player 6.

Синтаксис
my_lv.onLoad = function(success:Boolean) {
// ваш код
}

Параметры

success Булева величина, показывающая, успешно (true) или нет (false), прошел процесс загрузки.

Возвращает
Булева величина.

Описание

Обработчик события; вызывается, когда загрузка данных методом LoadVars.load()или LoadVars.sendAndLoad(), завершена. Если операция завершена успешно, my_lv содержит загруженные переменные, которые становятся доступны с момента трансляции оповещения о событии.

...........

Трэйс находится как раз в этом обработчике, поэтому знает значения на момент вызова (Он и вызывается после загрузки данных).
Соответственно присвоение значений текстовому полю нужно выполнять в этом обработчике или по крайней мере после наступления этого события

Dark Wand
20.10.2009, 01:31
var my_lv:LoadVars = new LoadVars();
my_lv.onLoad = function(success:Boolean) {
if (success) {
for (var variable:String in this)
{
trace(variable + ': ' + this[variable]);
// где variable - имя переменной
// this[variable] - ее значение
ta.text = variable;
}
} else {
trace("Ошибка в загрузке / разборе результирующей строки.");
}
};
my_lv.load("http://info.radiostyle.ru/inc/getinfo.php?getcurentsong=157&mount=paraplanradio");

Оutput:
Das Moth - Tokio Disko Mix :
onLoad: [type Function]
В итоге получаю в TextArea: onLoad:

Kuruki
20.10.2009, 03:13
Все верно, это имя последней переменной объекта my_lv :). Избавиться от нее можно удалив ее или просто отсеив.
Удалить можно так
my_lv.onLoad = function(success:Boolean) {
delete this.onLoad;
if (success) {
...
}
}
Отсеить так
my_lv.onLoad = function(success:Boolean) {
if (success) {
for (var variable:String in this)
{
if(variable != 'onLoad')
{
ta.text = variable;
}

}
}
}
Ответы на два ваших следующих вопроса:

Чтобы показать все переменные в текст. поле воспользуйтесь оператором +=
ta.text += variable;

Чтобы показать каждую переменную на новой строке воспользуйтесь специальным символом \n
ta.text += variable + '\n';
:)

Dark Wand
20.10.2009, 09:09
Kuruki,

Цены тебе нет:) СПАСИБО!!!