Hi,
Ajax.Updater (and the rest) don't claim to post object graphs to the
server, and in fact they don't. They only pass name-value pairs,
because they're doing normal HTTP GETs or POSTs, which are based on
name-value pairs. HTTP doesn't know anything about JSON.
If you want to pass an object graph, you could pass a single parameter
with your JSON-formatted data as the value:
new Ajax.Updater(this.msg, '/inc/Calendar/Validate.php',
{
'parameters': {json: this.toJSON()}
}
);
...and then decode the JSON-formatted data (the value of the 'json'
parameter) on the server. There are JSON libraries for most server-
side languages (and if there isn't one that suits your environment,
well, the point of JSON is that it is easily parsed -- see json.org
for details).
HTH,
--
T.J. Crowder
Independent Software Consultant
tj / crowder software / com
www.crowdersoftware.com
On Dec 17, 10:14 pm, Ian R <[email protected]> wrote:
> So ok, I have this JSON string I'm trying to pass as a post. From my
> object's toJSON() method, I get this string:
>
> {
> "anonymous_element_1": {
> "class": "required",
> "msg": ""
> },
> "anonymous_element_2": {
> "class": "required",
> "msg": ""
> },
> "public_phone": {
> "class": "phone",
> "value": "706-201-1149",
> "msg": ""
> },
> "private_phone": {
> "class": "phone",
> "value": "315-487-9176",
> "msg": ""
> }
>
> }
>
> Which is valid JSON according tohttp://www.jsonlint.com/...
>
> However, when I try to pass this to a PHP script:
>
> new Ajax.Updater(this.msg, '/inc/Calendar/Validate.php',
> {
> 'parameters': this.toJSON()
> }
> );
>
> I get nothing passed.
>
> However, I've noticed that if I take the multidimensional aspect out
> of it and just use the format {'key':'value,'key':'value'}, it passes
> just fine. Also, if I specifically set the "method" to "get", I this
> passed in $_GET
>
> Array
> (
> [{"anonymous_element_1":_
> {"class":_"required",_"msg":_""},_"anonymous_element_2":_
> {"class":_"required",_"msg":_""},_"public_phone":_
> {"class":_"phone",_"value":_"706-201-1149",_"msg":_""},_"private_phone":_
> {"class":_"phone",_"value":_"315-487-9176",_"msg":_""}}] =>
> )
>
> Basically a crazy URL-encoded version of my JSON, as the key in a
> valueless array. Hm.
>
> What am I doing wrong here? I just don't get it.
>
> Thanks in advance!
>
> Ian
--
You received this message because you are subscribed to the Google Groups
"Prototype & script.aculo.us" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to
[email protected].
For more options, visit this group at
http://groups.google.com/group/prototype-scriptaculous?hl=en.