PDA

Просмотр полной версии : loadVariables + POST + PHP


Krisha
10.12.2003, 17:51
Пытаюсь передавать переменные из ролика php скрипту и получать ответ, делая var_dump($_POST) заметил, что передаются все переменные, кот. существуют в текущем клипе.

Возможно ли в 5 флеше передавать методом POST только те переменные, которые нужно, а не всё подряд ? Как это сделать по-человечески ? И как правильно потом принять переменные, то есть получить ответ, так как сейчас этот ответ как бы автоматически приходит ?

Передаю вот так:

loadVariables(_root.scriptName + "?" + myVars, this, "POST");

sergsa
11.12.2003, 15:04
sendAndLoad попробуй
http://www.flasher.ru/tutorial/viewtut.php?id=135
тут описано более подробно, правда, там еще и привязка к MySQL, но ты используй что тебе нужно. Мне лично когда-то этот урок помог, может и тебе пригодится.

Krisha
11.12.2003, 16:48
Спасибо, делаю так:

в первом кадре ролика:

chaptersList = new Array();

getChaptersList();

function getChaptersList ()
{
Chapters = new LoadVars();
Chapters.action = 'getChaptersList';
Chapters.sendAndLoad(_root.scriptName, Chapters, 'POST');

Chapters.onLoad = function (success)
{
if (success)
{
this.chaptersList = unescape(this.chaptersList);
this.chaptersList = this.chaptersList.split('|');

for (i=0; i < this.chaptersList.length; i++)
{
_root.chaptersList[i] = this.chaptersList[i].split(',');
}
}
}
}

Данные приходят, но когда ролик переходит во второй кадр я массива _root.chaptersList еще не вижу, и понятно почему, потому, что данные еще не пришли. То есть еще не отработало событые onLoad.

Вопрос: Как сделать так, чтобы переход во второй кадр происходил только в том случае, если данные уже все получены ? Или может быть есть более красивые решения ?

sergsa
11.12.2003, 17:05
Chapters.onLoad=fff

fff-имя функции которая что-то делает с полученными данными и не надо во 2 кадр переходить, я во всяком случае именно так делал

Krisha
11.12.2003, 17:45
я не совсем врубаюсь, как должна выглядеть эта функция, а главное как убедиться, что всё пришло и данные готовы, не мог бы ты привести пример ?

sergsa
11.12.2003, 17:54
Chapter.onLoad=fff
function fff()
{
юзаем полученные данные(как?-это тебе виднее)
}

Функция будет вызвана, когда данные получены.

Пушистик
11.12.2003, 17:56
флэш передает ВСЕ перменные...абсолютно все!.....;)

Krisha
11.12.2003, 18:34
sergsa

К сожалению это мне не помогло. Событие onClipEvent (load) мувиклипа, который должен работать с пришедшими данными, происходит до того, как данные пришли и были обработаны.

при трейсе последовательность выглядит так:

- before getChaptersList
- inside getChaptersList
- movie loaded
- inside makeChaptersArray

Вот код 1 кадра:

chaptersList = new Array();

function getChaptersList ()
{
trace ("inside getChaptersList");

Chapters = new LoadVars();
Chapters.action = 'getChaptersList';
Chapters.sendAndLoad(_root.scriptName, Chapters, 'POST');

Chapters.onLoad = makeChaptersArray;
}

function makeChaptersArray ()
{
trace ("inside makeChaptersArray");

this.chaptersList = unescape(this.chaptersList);
this.chaptersList = this.chaptersList.split('|');

for (i=0; i < this.chaptersList.length; i++)
{
_root.chaptersList[i] = this.chaptersList[i].split(',');
}
}

trace ("before getChaptersList");
getChaptersList ();
stop();

sergsa
11.12.2003, 19:32
function makeChaptersArray () - это и есть та ф-ция, которая выполняется когда данные получены, вставь сюда код который их обрабатывает и все. Или если хочеш, что-бы данные обрабатывались во 2-м кадре, останови этот ролик на первом а в тело ф-ции makeChaptersArray () вставь gotoAndStop(2)

Krisha
11.12.2003, 20:07
Ура!
Ёлы палы :)

В первом кадре ставим стоп, берем от скрипта данные, обрабатываем их и добавляем в функцию обработки gotoAndPlay(2);

Во втором кадре тоже ставим стоп и размещаем мувик, который будет работать с данными.

Заработало!
Биг сенкс! :)