Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 1.0/2.0 (http://www.flasher.ru/forum/forumdisplay.php?f=93)
-   -   Передача массива из php в flash. Как распарсить ответ в actionscript 2? (http://www.flasher.ru/forum/showthread.php?t=210244)

dosya 12.02.2015 20:35

Передача массива из php в flash. Как распарсить ответ в actionscript 2?
 
Здравствуйте, не получается распарсить массив который был преобразован в пхп который взял контент из mysql.
Сам ответ(Массив) из php выглядит так:
Код:

{friend:'user1',status:1,relationship:'0'};{friend:'user2',status:2,relationship:'Братья'};{friend:'user3',status:0,relationship:'Коллеги'}
Строил его под прихоти AS2;
Теперь принимаю его на стороне Флеша, далее загонял в массив, но все тщетно каждый i-ый элемент являлся String-овым, так что я умудрился разбить все с дного массива в другой преобразовывая его в Object(Ну шоб из {_} получить параметры) и сохранял каждый элемент в новый массив. Проверял через typeof(); все катит OBJECT Аллилуйя, но далее пробую вытащить из него что-то но опять этот undefined -_-"
Пробовал все сделать не через запрос в пхп а просто создать массив с обджектами все хорошо выводит. Кстать это все называется associative array. Все выводится как и в инете таких полно. Но именно у меня с внешним эррэйем все сложно.
И еще одно: чтоб загнать все это Стринговое значение в массив я был вынужден split-ом вырезать ; (точку с запятой) ну чтоб рассматривать их как отдельные элементы.
Пожалуйста помогите, буду признателен.
Вот и сам код:
Код AS1/AS2:

var firstarray:Array=new Array();
var friendsarray:Array=new Array() ;
var returner:LoadVars = new LoadVars();
var obj:Object=new Object();

Код AS1/AS2:

on (release) {
  sendXML = new XML("&login=" + escape(login));
  sendXML.sendAndLoad("data/friends.php",returner,"POST");
  returner.onLoad = function(success:Boolean)
  {
    firstarray = returner.arrayfromserver.split(";");
    firstarray.sortOn(["friend", "status" ]);
    for (i = 0; i < firstarray.length; i++)
    {
      obj=Object(firstarray[i]);
      friendsarray.push(obj);
      pole =pole+friendsarray[i].friend+" ";
    }
  };
}


dark256 13.02.2015 10:45

Все это у вас называется JSON. Формат ответа.
Ищите по форуму парсер. Я уже раза 3 кидал его в эту ветку за последние пару месяцев.

nubideus 13.02.2015 10:46

это не json

dark256 13.02.2015 11:00

Да. Согласен. Не он. А похож, чертяка :)

Добавлено через 18 минут
С учетом того, что ФОРМАТ расположения всех знаков препинания стандартный:

Код AS1/AS2:

var sj = "{friend:'user1',status:1,relationship:'0'};{friend:'user2',status:2,relationship:'Братья'};{friend:'user3',status:0,relationship:'Коллеги'}"
 
 
var ARRREZ:Array = new Array()
var ARR1:Array = sj.split(";")                                                                                                // Режем массив по ;
 
for ( var i=0; i<ARR1.length; i++ ){
        trace( "Source Array Item String:"+ARR1[i] )
 
        var tmp1 = ARR1[i].split("{")[1].split("}")[0].split(",")                                // Выкидываем {}
        var tmpobj = ARRREZ[ARRREZ.length] = new Object()
 
        for( var j=0; j<tmp1.length; j++){
                var tmp2 = tmp1[j].split(":")
                if ( tmp2[1].indexOf("'") >= 0 ) tmp2[1] = tmp2[1].split("'")[1]        // Выкидываем ''
                tmpobj[tmp2[0]] = tmp2[1]
        }
 
        for ( var w in tmpobj ) {
                trace( "    "+w+" = "+tmpobj[w] )
        }
}
 
trace( "\nTEST:"+ARRREZ[1].friend )


dark256 13.02.2015 11:20

Вложений: 1
Вложение 31425

dosya 13.02.2015 18:48

Спасибо вам большое. Вы еще и код написали. Спасибо, Ой а как здесь закрыть форум, и объявить ваш ответ как верным ответом?


Часовой пояс GMT +4, время: 16:22.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.