var obj_SomeNestedData  = eval('(' + unescape(transport.responseText) + ')');

Sorry!!! Silly typo.

On 05/03/07, Richard Quadling <[EMAIL PROTECTED]> wrote:
> Try something like this.
>
> <?php
> $a_SomeNestedData = array
>         (
>         // Some manual data.
>         'Key1' => 'Data1',
>         'Key2' => array
>                 (
>                 'Key2.1' => 'Data2',
>                 'Key2.2' => 'Data3',
>                 ),
>         // Some external data.
>         'POST' => array_key_exists('_POST',$GLOBALS) ? $_POST : NULL,
>         'GET' => array_key_exists('_GET',$GLOBALS) ? $_GET : NULL,
>         'COOKIE' => array_key_exists('_COOKIE',$GLOBALS) ? $_COOKIE : NULL,
>         );
>
> $s_Response = rawurlencode(json_encode($a_SomeNestedData));
> echo $s_Response;
> ?>
>
> On the CLI for me, this produces ...
>
> %7B%22Key1%22%3A%22Data1%22%2C%22Key2%22%3A%7B%22Key2.1%22%3A%22Data2%22%2C%22Key2.2%22%3A%22Data3%22%7D%2C%22POST%22%3A%5B%5D%2C%22GET%22%3A%5B%5D%2C%22COOKIE%22%3A%5B%5D%7D
>
> Now, assuming this was the response to an AJAX request, you would then use ...
>
> var obj_SomeNestedData = unescape(transport.responseText)
>
> in your onSuccess handler to get the data back again.
>
>
> xpmstos wrote:
> > I use a generic PHP server which uses the PECL ext/json.
> > My server use this to get the data:
> > $data = json_decode(file_get_contents('php://input'));
> >
> > The client-code is simpel, i don't select any encoding-formats etc.:
> > new Ajax.Request('server.php',
> >   {
> >     method: 'post',
> >     parameters: JSON.stringify({
> >       method: 'foo::bar',
> >       params: [data],
> >       id: new Date().getTime()
> >     }), ...
> Hello XP,
>
> I'm not a network guy, but I imagine you may find that some users
> (i.e. those using proxy servers, or those using certain browsers) may
> encounter problems when attempting to post non-url encoded characters.
>  In fact, it may not work for anybody.  Traditionally, setting up a
> scheme like this in php would simply request php to build the data
> from the posted string:
>
> <php>
> $data = $_POST;
>
> // where data then looks like the following, based on an ajax-posted
> object run through Hash.toQueryString()
> $data = array(
>  'method'=>'foo::bar',
>  'params'=>array('some data',array('some nested'=>'data')),
>  'id'=>'1123123123'
> );
> </php>
>
>
> If you WOULD like to try sending JSON, you could override the original
> prototype Hash.toQueryString method by defining it after inclusion of
> prototype something like so:
>
> Object.extend(Hash, {
>  toQueryString: function(obj) {
>    JSON.stringify(obj);
>  }
> });
>
> then, in the parameters, send a simple object like so:
>
> new Ajax.Request('server.php',
>  {
>    method: 'post',
>    parameters: {
>      method: 'foo::bar',
>      params: data,
>      id: new Date().getTime()
>    }), ...
>
>
> If you do try it, let us know what you find.
>
>
> Regards,
>
> Ken Snyder
> - Show quoted text -
>
> >
>
>
>
> On 04/03/07, xpmstos <[EMAIL PROTECTED]> wrote:
> >
> > Hello Christophe, Hello Ken,
> >
> > i use atm FF2.0, but i want a compatibility for I.E.also etc.
> > When i use your simple object:
> > > new Ajax.Request('server.php',
> > >   {
> > >     method: 'post',
> > >     parameters: {
> > >       method: 'foo::bar',
> > >       params: data,
> > >       id: new Date().getTime()
> > >     }), ...
> > the first chars in my string would be correct, but not the followings,
> > the result look like this:
> > {"method%22%3A%22foo%3A%3Abar%22%2C%22params%22%3A%
> >
> > I worked with another solution now. I use my javascript code like
> > before:
> >  new Ajax.Request('server.php',
> >   {
> >     method: 'post',
> >     parameters: JSON.stringify({
> >       method: 'foo::bar',
> >       params: [data],
> >       id: new Date().getTime()
> >     }),
> >     onSuccess:doSomething,
> >     onFailure: function(){ alert('Something went wrong...') }
> >   });
> >
> > But new is my little solution on the server side, i will tell, it's
> > simple but it will works:
> > function hex2str($hex) {
> >   $str = ''; $loop = 1;
> >   for($i=0; $i<strlen($hex); $i+=$loop) {
> >     $chr = substr($hex,$i,1);
> >     if($chr=='%') { // found next hex
> >       $chr = substr($hex,$i+1,2);
> >       $str .= chr(hexdec($chr));
> >       $loop = 3;
> >     }
> >     else { // next char
> >       $str .= $chr;
> >       $loop = 1;
> >     }
> >   }
> >   return substr($str,0,strlen($str)-1); // kill the last "=", little
> > bug
> > }
> >
> > And now, i receive the string, decode it firstly with hex2str, before
> > it decode as a JSON objekt:
> > $string = hex2str(file_get_contents('php://input'));
> > $objJSON=json_decode($string);
> >
> > What would you think, is it a terrible solution? Or is it acceptable?
> > Thanks for you help Christophe and Ken
> >
> >
> > --~--~---------~--~----~------------~-------~--~----~
> > You received this message because you are subscribed to the Google Groups 
> > "Ruby on Rails: Spinoffs" 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/rubyonrails-spinoffs?hl=en
> > -~----------~----~----~----~------~----~------~--~---
> >
> >
>
>
> --
> -----
> Richard Quadling
> Zend Certified Engineer : http://zend.com/zce.php?c=ZEND002498&r=213474731
> "Standing on the shoulders of some very clever giants!"
>


-- 
-----
Richard Quadling
Zend Certified Engineer : http://zend.com/zce.php?c=ZEND002498&r=213474731
"Standing on the shoulders of some very clever giants!"

--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups "Ruby 
on Rails: Spinoffs" 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/rubyonrails-spinoffs?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to