Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Как передать двумерный массив методом Post в скрипт php? (http://www.flasher.ru/forum/showthread.php?t=178794)

nitsik 29.04.2012 00:03

Как передать двумерный массив методом Post в скрипт php?
 
Как передать переменные методом post я знаю:
Код AS3:

function send_post(e:Event):void
{
        var gid = '17157755';
        var mess = 'flapps.ru';
 
        var loader:URLLoader = new URLLoader();
        var request:URLRequest=new URLRequest('http://flash/post.php'); // адрес вашего скрипта
        request.method=URLRequestMethod.POST;
 
        var vars:URLVariables = new URLVariables();
        vars['gid']= gid;
        vars['mess']=mess;
 
        request.data=vars;
        loader.addEventListener(Event.COMPLETE, onCompletePost);
        loader.load(request);
 
}
 
function onCompletePost(event:Event):void {
        // выводим полученные данные в поле result_tf
        result_tf.text=loader.data;
}

А как двумерный массив передать? Например
vars[1][letter], vars[1][frame], vars[2][letter], vars[2][frame]? Можно ли это как-то сделать?

bav 29.04.2012 01:04

Может использовать JSON?

ramshteks 29.04.2012 01:09

или XML. Ваша задача конвертировать ваш двумерный массив в удобоваримый для php формат. Какой у вас там используется, вы лучше знаете.
Сконвертированная строка записывается так же в какую либо переменную URLVariables

ChuwY 29.04.2012 02:26

Как-то так:

Код AS3:

private function sendArray(array2d : Vector.<Array>):void{
  var request : URLRequest = new URLRequest(_apiServerURL)
  var data    : URLVariables = new URLVariables();
 
  for(var i : int = 0; i < array2d.length; i++){
    var col : Array = array2d[i];
    data["array2d[" + i + "][]"] = col;   
  }
 
  request.data  = data;
  request.method = URLRequestMethod.POST;
 
  _loader.load(request)
}


wvxvw 29.04.2012 11:35

Если вы присвоите:
Код AS3:

var variables:URLVariables = new URLVariables();
variables.letter = [1, 2];
trace(variables);

то получите: ?letter=1&letter=2 в запросе. Большинство парсеров запроса понимают это как массив.
Естесственно, имейте в виду ограничения - далеко не каждый объект можно таким образом записать. Да и вообще, этот формат не самый подходящей для передачи большого количества информации. Так что если нужно посылать много структурированных данных, то AMF / JSON / CSV и т.д.

nitsik 29.04.2012 22:55

Всем спасибо. Решил использовать json.
Код AS3:

import com.adobe.serialization.json.JSON;
 
function send_post(e:Event):void
{
 
 
        var loader:URLLoader = new URLLoader();
        var request:URLRequest=new URLRequest('http://flash/json.php'); // адрес вашего скрипта
        request.method=URLRequestMethod.POST;
 
        var vars:URLVariables = new URLVariables();
        var str:String = JSON.encode(obj);
        vars['post'] = str;
 
        request.data=vars;
        loader.addEventListener(Event.COMPLETE, onCompletePost);
        loader.load(request);
 
}
 
function onCompletePost(event:Event):void {
        trace('отправлено');
}



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

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