![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
![]() |
|
|||||
|
Привет!
Нужно передать данные из функции в массив. Помогите разобраться. Сильно не мните, в ActionScript всего неделю ![]() Переменные s1,s2,s3 не присваиваются значения. Подскажите как лучше сделать. Пожалуйста для ActionScript 2.0. Вот код: function ReadPHP(news_number):Array { // Загружаем данные из PHP var sv:LoadVars = new LoadVars(); var rv:LoadVars = new LoadVars(); var s1:String = ""; var s2:String = ""; var s3:String = ""; rv.onLoad = dataLoad; sv.sendAndLoad("http://www.eg.ru/read_top5.php?number=" + news_number, rv, "POST"); //trace("read_top5.php?number=" + news_number); function dataLoad(done:Boolean) { if (done) { //trace(rv.my_title); //trace(rv.short_story); s1 = rv.my_title;//Header s2 = rv.short_story;//Short story s3 = rv.category;//Category Trace(s1); Trace(s2); Trace(s3); } }; var ar:Array = new Array(); ar.push(s1);//Header ar.push(s2);//Short story ar.push(s3);//Category Trace("Внешние переменные: " + ar); return ar; };//ReadPHP //Загружаем новости //MyArr = new Array(3); var Arr:Array = new Array(); Arr = ReadPHP(0); news_header_01 = Arr[0]; news_short_story_01 = Arr[1]; news_category_01 = Arr[2]; PHP обрабатывает все нормально. Данные проходят. |
|
|||||
|
Модрон-ветеринар
|
Заполнение массива и его возврат поставьте внутрь функции dataLoad, иначе элементы массива останутся неопределенными. (Код AS работает асинхронно, у вас к моменту заполнения массива переменные s1 и прочие еще не определены). И массив объявите пораньше, например, в начале функции.
Добавлено через 11 минут function ReadPHP(news_number):Array { // Загружаем данные из PHP var sv:LoadVars = new LoadVars(); var rv:LoadVars = new LoadVars(); s1 = ""; s2 = ""; s3 = ""; ar = new Array(); rv.onLoad = dataLoad; sv.sendAndLoad('http://www.eg.ru/read_top5.php?number=' + news_number, rv, 'POST'); //trace('read_top5.php?number=' + news_number); function dataLoad(done:Boolean) { if (done) { //trace(rv.my_title); //trace(rv.short_story); s1 = rv.my_title;//Header s2 = rv.short_story;//Short story s3 = rv.category;//Category ar.push(s1);//Header ar.push(s2);//Short story ar.push(s3);//Category return ar; } } }//ReadPHP //Загружаем новости //MyArr = new Array(3); var Arr:Array = new Array(); Arr = ReadPHP(0); news_header_01 = Arr[0]; news_short_story_01 = Arr[1]; news_category_01 = Arr[2]; Добавлено через 28 минут И если уж по мелочам, то точки с запятыми в конце функций не нужны, так они объявляются явно, и не анонимные, через ссылку, как тут: Последний раз редактировалось mooncar; 02.08.2009 в 19:06. |
|
|||||
|
Внутри функции dataLoad все видно, только после выхода из нее в массиве AR все значения undefined
Добавлено через 4 минуты >И если уж по мелочам, то точки с запятыми в конце функций не нужны Сорри, привычка из Pascal |
|
|||||
|
Модрон-ветеринар
|
Поставьте внутрь блока с if (done) {
|
|
|||||
|
Не работает. Видно только внутри функции dataLoad. При выходе опять undefined
|
|
|||||
|
Модрон-ветеринар
|
Это ерунда, главное массив заполняйте внутри dataLoad... а вот как с возвратом быть.. тут я поторопился.
|
|
|||||
|
Интересная вложенная функция. Даже глобальные переменные после выхода из нее становятся неопределенными. Почти целая ночь гугления ничего не дала. Встречал слабопохожие варианты, но там говорили табу.
В общем сделал внутри нее вызов в 3-ю функцию и тогда все заработало. Спасибо за участие :-) Последний раз редактировалось dmk777; 03.08.2009 в 13:07. |
|
|||||
|
Модрон-ветеринар
|
Хорошо.Конечно же, можно было бы и по другому организовать, но на самом деле задачка, как мне кажется, имеет решение. Эх опыт, сын ошибок трудных...
|
![]() |
![]() |
Часовой пояс GMT +4, время: 00:40. |
|
|
« Предыдущая тема | Следующая тема » |
|
|