Hi Everyone,
Let me start by saying that this application worked until our
server crashed, so I do believe that there is some kind of setting
within the server that is preventing this from working once again,
but our server is set to all default values for now.
I basically have a datagrid that is populated via the
FABridge component which receives an array from JavaScript, which
receives the info from a PHP script, which retrieves a result set
from MySQL.
Once more, this worked prior to the server crashing three
Sundays ago. For now, I run the PHP file which generates the string
that I want to send to JavaScript, which then sends it to the
datagrid. I copy & paste the string:
[code]
mySeFunc([{SHOWS: "some_show ", GENDER: "Male", AGE: "21",
FIRST_NAME: "Joe", LAST_NAME: "Somebody", EMAIL_ADDRESS:
"something@yahoo.com", PHONE_NUMBER: "5555555555", CITY:
"Some_city", STATE: "Some_state", ZIP: "11111", PICTURE:
"some_pic.jpg"}]);
[/code]
If I take this string, then copy & paste it in place of a
variable -- "response":
[code]
function handleResponsePost()
{
if(http.readyState == 4 && http.status == 200)
{
var response = http.responseText;
if(response)
{
window.onload = eval(response);
}
}
}
As such:
function handleResponsePost()
{
if(http.readyState == 4 && http.status == 200)
{
var response = http.responseText;
if(response)
{
window.onload = eval(mySeFunc([{SHOWS: "some_show ", GENDER:
"Male", AGE: "21", FIRST_NAME: "Joe", LAST_NAME: "Somebody",
EMAIL_ADDRESS: "something@yahoo.com", PHONE_NUMBER: "5555555555",
CITY: "Some_city", STATE: "Some_state", ZIP: "11111", PICTURE:
"some_pic.jpg"}]);
}
}
}
[/code]
Then the datagrid populates just fine. And it used to receive
these Strings from an echo coming from my PHP file which retrieved
a resultset from MySQL before the server crashed. As follows:
[code]
echo "mySeFunc([".$myComboVar2."]);";
[/code]
Now if I copy & paste the same String, that I receive
from the PHP file, then I will see a JavaScript error from the
console:
[code]
echo "mySeFunc([{SHOWS: "some_show ", GENDER: "Male", AGE:
"21", FIRST_NAME: "Joe", LAST_NAME: "Somebody", EMAIL_ADDRESS:
"something@yahoo.com", PHONE_NUMBER: "5555555555", CITY:
"Some_city", STATE: "Some_state", ZIP: "11111", PICTURE:
"some_pic.jpg"}]);";
[/code]
The JavaScript code which sends the code to the Flex app:
[code]
function mySeFunc(someArrayComing)
{
var flexApp = FABridge.fab.root();
flexApp.myActionScriptFromJavascript(someArrayComing);
}
[/code]
The code within Flex which receives the String:
[code]
public function
myActionScriptFromJavascript(someArrayComing:Array):void
{
dataGrid.dataProvider = someArrayComing;
dataGrid.validateNow();
}
[/code]
What configuration in the server could cause the same String
literal to work directly from Javascript and not to work if it's
passed from PHP? I know that it cannot be the length of the String
literal because, I have tried pasting just ONE record and it still
gives me the same error:
[code]
Error: missing } in XML expression
Source File:
http://www.somedomain.com/someJSscript.jsLine 56
mySeFunc([{SHOWS: "some_show ", GENDER: "Male", AGE: "21",
FIRST_NAME: "Joe", LAST_NAME: "Somebody", EMAIL_ADDRESS:
"something@yahoo.com", PHONE_NUMBER: "5555555555", CITY:
"Some_city", STATE: "Some_state", ZIP: "11111", PICTURE:
"some_pic.jpg"}])
[/code]
Which the arrow pointing in the JavaScript Console to the
place where the error lies, is after the ":" following SHOWS:
Once more, all of this worked perfectly for months. We have a
database of over 23,000 records. For now, each morning I run the
PHP script, copy & paste the result set in place of the
variable "response" and the datagrid loads within 20 seconds on
Macs and 2 minutes on PCs.
For obvious reasons, I'd rather not be copy & pasting
every morning as the db grows daily.
Thanks in advance :-)