Передача массивов из Flash в PHP - PullRequest
4 голосов
/ 20 мая 2011

У меня проблема с передачей переменной массива из Flash (AS2) в PHP. В сценарии действия у меня есть несколько массивов, определенных как

output["px1"]
output["px2"]
output["px3"]

и затем я использую следующий код для передачи переменных в php-файл

output.sendAndLoad("orders/print2cart.php",output,"POST");

Я хочу знать, как получить данные из массива в PHP. Я пытался использовать $_POST['px1'], $_POST['output']['px1'], $_POST['output'], но я не могу получить какие-либо данные. Любые идеи относительно того, что я могу изменить, чтобы получить желаемый результат?

Спасибо!

РЕДАКТИРОВАТЬ: Только что заметил, что одна из других переменных в output (output.username) также не отправляется в PHP, несмотря на то, что он отображается во флэш-памяти. Используя следующий код для оповещения о вспышке, он показывает все переменные правильно. getURL ("javascript: alert ('Печать штампа:" + output.PrintStamp + "Пользователь:" + output.username "')");

РЕДАКТИРОВАТЬ: похоже, как только я отправляю довольно длинный массив (или строку в этом отношении), ни одно из других полей, связанных с переменной LoadVars, также не отправляются. Я погуглил его на предмет ограничений, и он говорит, что текстовые ограничения составляют ~ 63000. Все еще не уверен, что это проблема

Ответы [ 3 ]

3 голосов
/ 20 мая 2011

Попробуйте как строку.

Используйте Array.join(); во флэш-памяти и отправьте возвращаемое значение, затем используйте explode() в PHP, чтобы преобразовать его обратно в массив.

var dataOut:LoadVars = new LoadVars();
var dataIn:LoadVars = new LoadVars();

dataOut.info = your_array.join("#");

vars.sendAndLoad("url", dataIn, "post");

dataIn.onLoad = function(go:Boolean):Void
{
    if(go)
    {
        trace('success');
    }
    else trace('connection failed');
}

PHP:

<?php
    $str = $_POST["info"];
    $myarray = explode($str);
?>
1 голос
/ 17 апреля 2012

Вы можете сделать то же самое, что и с HTML, указав свои параметры "array [0]", "array [1]" и т.д ...:

    var urlVariable:URLVariables = new URLVariables();
    urlVariable["phpArray[0]"] = "arrayEntry0";
    urlVariable["phpArray[1]"] = "arrayEntry1";

    var loader:URLLoader = new URLLoader();
    var request:URLRequest = new URLRequest("http://yourserver.com/phpScript.php");
    request.method = URLRequestMethod.POST;
    request.data = urlVariable;

    loader.load(request);

затем на сервере вы можете проверить результат, полученный php-скриптом:

    print_r($_POST);

должно вывести:

    Array
    (
        [phpArray] => Array
            (
                [0] => arrayEntry0
                [1] => arrayEntry1
            )
    )

и для многомерного массива вы можете использовать:

    urlVariable["phpArray[0][0]"] 
1 голос
/ 26 мая 2011

Поскольку других альтернатив не было, и я прошел через множество вещей, прежде чем пришел к выводу, что массивы больших размеров не могут быть легко переданы из AS2 в PHP.На самом деле мой массив представлял собой изображение, преобразованное в пиксели, поэтому я разбил массив на 2 части и разместил в файле PHP дважды, а не только один раз.Другой альтернативой может быть разделение и размещение массива в текстовом файле, а затем чтение этого текстового файла непосредственно из PHP.

...