-
Happy FK'er
Sending an array to Flash from PHP
So I'm trying to send an array of values from PHP to Flash, but the problem is any character I could use to separate the values could potentially be in the value itself.
Fine, no problem I thought. I'll just urlencode the variables and allow (for arguments sake) commas to separate the 'encoded' values.
Just after I'd finished laughing about my mighty victory over code adversary as I often do, I attempted to fetch the array from the PHP file and I quickly learned that Flash automatically applies the 'escape' function to the data after it is received. My laughter was replaced by (for theatrical sake) tears!
Well that's great. It seems I need one of the following:
A way to tell Flash to stop automatically 'escaping' the incoming variables, or
A way to send an array of values without using a character that could be used in the variable (which could be anything... fullstops, commas, dashes. Pretty much anything within reason)
Now, before you mention that I should just make a NVP (Name value pair) for each variable in the array, know that there is quite a lot of data already being loaded, and adding (what I consider is) unnecessary extra NVP syntax (which would double the large amount of data I'm sending) could potentially cause trouble, not to mention a general lack of bandwidth.
Should I bite the bullet and NVP my arrays (ugh!), or maybe use an obscure character as the separator... but I would like a practical approach to this solution... like stopping Flash from automatically escaping the input.
Also, if you're having trouble visualising the scenario, here's some example code I whipped up to illustrate the scenario:
PHP Code:
<? $one = "apple"; $two = "pear"; $three = "banana,strawberry"; //Remember, $three should be one array item.
$one = urlencode($one); $two = urlencode($two); $three = urlencode($three);
echo "&resultingData=" . $one . "," . $two . "," . $three; ?>
PHP returns:
&resultingData=apple,pear,banana%2Cstrawberry
And the AS:
Actionscript Code:
sender = new LoadVars(); loader = new LoadVars(); sender.sendAndLoad("TESTFILE.php", loader, "GET") loader.onLoad = function(){ arrayData = loader.resultingData arrayData = arrayData.split(',') numOfResults = arrayData.length trace ("Fetched array. There were " + numOfResults + " fetched. There should be three.") for(i=0;i<arrayData.length;i++){ trace("Var: " + i + "=" + arrayData[i]) } }
Flash returns:
Fetched array. There were 4 fetched. There should be three.
Var: 0=apple
Var: 1=pear
Var: 2=banana
Var: 3=strawberry
Edit: Damnit. How did this end up in AS3.0? I could have sworn I chose AS2.0. If a mod could kindly move it to the right spot I would be infinitely grateful. Sorry about the confusion.
Last edited by TheWaste; 03-02-2010 at 09:24 PM.
Reason: Wrong section warning
"Good lord, you're wasting thousands of dollars worth of Interferon!"
"... and you're Interferon with our good time!"
Tags for this Thread
Posting Permissions
- You may not post new threads
- You may not post replies
- You may not post attachments
- You may not edit your posts
-
Forum Rules
|
Click Here to Expand Forum to Full Width
|