![]() |
Незаполняется массив
вот код 1 фрейма
-------------------------------------- var vuz= new Array(); var acts= new Array(); loadVariablesNum(".....", _self); //загружаю переменные a и b _root.onData = function() { vuz[0] = a; acts[0] = b; } ----------------------------------------- проблема в том, что в итоге массив пуст. переменные грузятся точно, проверял. если кто-то сможет приветси пример загрузки массива через loadVars буду очень благодарен. |
может поможет ...
Код:
loadedVars = new LoadVars(); |
наверное я делаю что-то не так. но теперь с твоим примером я вообще перестал получать переменные. может дело в том, что с помощью
loadedVars.load("http://localhost/myprog/shut.php? id=1&flag=team&base=0"); я пытаюсь одновременно послать переменные ? с loadVariablesNum у меня получалось одновременная передача и прием данных. вот только , опять же, в массив их не засунуть. но за пример спасибо. |
может ты расскажешь что ты имненно хочешь сделать и зачем это тебе нужно. ок ?
|
Так вроде как и объяснил. Просто кое-что не досказал, не посчитал это важным, но в крации нужно след.:
Файл shut.php, в зависимости от значения переменных полученных от shut.swf посылает обратно в shut.swf 2е переменные “a”и ”b” с определенным текстом. Так вот значение этих переменных нужно запихать в массивы “nuz” и “acts” соответственно. Почему в массивы ? а не в обычные переменные ? потому что запросов N_ое кол-во (в примере ниже - 5) и значение переменных “a” и “b” все время меняется, но их значения нужно обязательно сохранить для дальнейшего пользования. (потом будут выводиться в динамическом поле). Я сделал это примерно так. ------------------------------------------------- for(q = 1; q<=5;q++) { loadVariablesNum("http://localhost/myprog/shut.php?id="+q+"&flag=team&base=0", _self); _root.onData = function() { vuz[q]=a; acts[q]=b; } } ------------------------------------------------- shut.php, в зависемости от значения полученной переменной id генерирует строку: echo("&a=blabla&b=kuku"); проблема, повторюсь, в том, что массивы не заполняются, в то время как если поставть вместо массивов обычные переменные и им передать значения a и b все получается. но мне то нужны массивы данных а не пара переменных. PS спасибо fiot за проявленный интересн ! надеюсь объяснишь дураку, где я ошибся. |
есть RTFM советую почитать ...
есть ещё один пример ... Код:
Цитата:
|
нечиге не выходит.переменные не грузит.
ладно. буду РТФМ качать. в любом случаи спасибо. ----------- а разве & перед a нужен ? ------------- в моем случаи да. до этого echo() есть еще килограм кода, и флэш, без & путается . |
Вот, благодаря твоему примеру, научился пользоваться loadvars, За что тебе большое спасибо !!!!.
Но главная проблема осталась.Т.е. и теперь полученные переменные с легкостью передаются другим переменным, но вот как только я их помещаю в массивы, массивы опять пусты. --------------------------------- vuz =new Array(); acts=new Array(); Load = new LoadVars(); Send = new LoadVars(); Send.id = "1"; Send.flag = "team"; Send.base = "0"; Send.sendAndLoad("http://localhost/myprog/shut.php", Send, "GET"); Send.onLoad = initVars; function initVars() { vuz[0] = Send.a; acts [0]= Send.b; } --------------------------------------------- дальше пытаюсь вывести значения массива , путем создания динамического поля с вар vuz и вар acts. поля пусты. :( в то время как переделав этиже массивы в обычные переменные, и передать им соответствующие значения все работает. |
ээээ... ты создаешь массивы, потом переменные с тем же именем и удивляешься, что не отображается?
каким образом массив должен отобразиться в динамо-поле? поставь вместо поля trace и будет те щастье. |
странно. мне всегда какалось, если объявлен массив с именем
some Array(); то где бы я не написал some , это слово всегда будет ассоциироваться с массивом. а как же тогда быть ? как заполнить массив ? |
Может так >>>
Код:
vuz =new Array(); |
не вышло.
он только длинну вернул. |
если уж тебе упёрлось проверять переменную через текстовое поле поставь как переменную не vuz а vuz[0]...
да, кстати ты юзаешь синтаксис as1 а там нет жестко привязанного типа переменных - ты можешь написать var someVar = new Array(); someVar = "some text"; и в someVar будет строка, а не массив... |
да, думаю ты прав дело в особенности as1. пойду покупать последнию верси.
спасибо. |
зачем те as2? по мне так as1 удобнее. просто чуть сложнее отслеживать изменения переменной.
кароч, у тя все по ходу пашет нормально, просто проверяешь коряво)) |
а как же проверять тогда ? я создал динамические поля с названиями массивов. затем , с помощью цикла заполняю массив:
---------------------------------------------------------------- vuz =new Array(); acts=new Array(); for (k=1; k<=5; k++) // т.е. в данном примере я заполняю 5 элементов { Load = new LoadVars(); Send = new LoadVars(); Send.id = k; // переменную которую необходимо менять Send.flag = "team"; Send.base = "0"; Send.sendAndLoad("http://localhost/myprog/shut.php", Send, "GET"); Send.onLoad = initVars; function initVars() { vuz[k] = Send.a; // заполняю 1ый массив acts [k]= Send.b;// заполняю 2ой массив } } ------------------------------------------------------------------- в итоге массив пуст. точнее поля с названиями этих массивов. но вот что интересно, если я объявлю эти массивы не в начале, как сделал, а в конце: function initVars() { vuz =new Array(); vuz[k] = Send.a; // заполняю 1ый массив acts=new Array(); acts [k]= Send.b;// заполняю 2ой массив } то массив заполнится , но, как можно догадаться , только на 1 элемент. и это понятно, т.к. находясь в цикле, массивы с каждым разом объявляются заного. Итогю: как я понимаю дело в облости жизни массива. т.к. в 1 случаи я объявил массив и заполнил его в разных местах, а во 2ом внутри одной функции. есть мысли ? |
Цитата:
сначала определяем функцию, а уж потом циклы и пр... |
ну вот. хотя бы заполнил массив. спасибо тебе большое.
только вот не понятно почему везде индекс 6. (единственное что я изменил в твоем коде, это не k<kmax ,а k<=kmax т.к. мне нужно захватить и посл. элемент) Output: ------------------------------- acts[6]=kira; vuz[6]=SPBGUI; acts[6]=misha; vuz[6]=good; acts[6]=lesha; vuz[6]=well; acts[6]=sasha; vuz[6]=nowell; acts[6]=anton; vuz[6]=very; ------------------------------- ну и собственно динамо поле не заполнилось все равно. у меня 2а поля : 1ое InstanceName - нету var vuz; 2ое InstanceName - нету var acts; ps а var load действительно ненужен. я его забыл удалить. раньше использоваk .load сейчас .sendandload. извините. |
хмм...
ты точно не переопределяешь k в скрипте? если нет - проставь в некоторых местах trace, мож выяснишь. а я всё-равно больше не смогу помочь, не видя целого файла... по-поводу полей - я ступил: Цитата:
|
и на этом спасибо. буду рыть дальше.
|
Цитата:
|
мужики. последнии байты кода, помогите !!!
shut.php на выходе дает echo("&a=sasa,misa,lesa,anton,gena&b=well,nowell,good,very,popa"); ------------------------------------- Send = new LoadVars(); Send.flag = "team"; Send.sendAndLoad("http://localhost/myprog/shut.php", Send, "GET"); Send.onLoad = function(success) { if (success) { trace("Send.a="+Send.a+" Send.b="+Send.b); //все выдает vuz = Send.a.split(",");//заполняю массив vuz base = Send.b.split(",");//заполняю массив base trace("vuz="+vuz+" base="+base);//выдает норм. массив } } trace("vuz ="+vuz+" base="+base);// нихера не выдает. -------------------------------------------------- так вот как эти массивы (vuz и base) заполучить вне тела функции (success). кароче как их передать другим переменным и дальше использовать. |
Проблема решена.
понадобилось 5 дней и 4 вечера чтобы понять, что данные не грузятся моментально и что могут не успевать догружаться до собыия которое их использует. Еще раз спасибо большое. |
| Часовой пояс GMT +4, время: 19:28. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.