Hi,

> I tried use fixedEncodeURI like suggest in your links.

I've never even heard of fixedEncodeURI.

People are taking the time to help you here, it's worth taking the
time to carefully *read* what people have written and try the things
they suggest (or not, of course, it's up to you).

This is what I've suggested that you haven't, as far as I can tell,
tried:

On Nov 8, 9:42 pm, "T.J. Crowder" <t...@crowdersoftware.com> wrote:
>
> The most reliable way to send parameters that I know is to send them
> URL-encoded, and to decode them as URL-encoded data. In Prototype, the
> easiest way to do that is to supply a plain object to the Ajax.Request
> method (which Prototype will correctly encode for you):
>
>     var jsonRequest = ...;
>     new Ajax.Request( // ...
>         parameters: {json: jsonRequest}
>         // ...
>     });
>
> ...and then retrieve the value just as you would any other value:
>
>     $request = $_POST["json"];
>     $requestObject = Zend_Json::decode($request); // Or your
> $zendJson, whatever that is

Good luck with it,

-- T.J.

On Nov 9, 11:37 pm, fashionpeople <fashionpeople.busin...@gmail.com>
wrote:
> I tried use fixedEncodeURI like suggest in your links.
>
> But doesn't work.
> I didn't understand the problem.
>
> On 9 Nov, 17:25, "T.J. Crowder" <t...@crowdersoftware.com> wrote:
>
>
>
>
>
>
>
> > Hi,
>
> > > I replaced escape with encodeURI. But decoding fails again.
>
> > Well, did you try actually doing what I suggested?
>
> > -- T.J.
>
> > On Nov 9, 4:07 pm, fashionpeople <fashionpeople.busin...@gmail.com>
> > wrote:
>
> > > Hi,
>
> > > I replaced escape with encodeURI. But decoding fails again.
>
> > >    function sendMessage(baseUrl, idNickRcv, msg) {
>
> > >       var requestObject       = new Object();
> > >       requestObject.idNickRcv = idNickRcv;
> > >       requestObject.msg       = msg;
>
> > >       var jsonRequest         = JSON.stringify(requestObject);
>
> > >       if ((idNickRcv) && (msg)) {
>
> > >          new Ajax.Request(baseUrl + '/usermsg/index/sendmessage', {
> > >             method:     'POST',
> > >             requestHeaders:{ Accept:'application/json' },
> > >             parameters: encodeURI(jsonRequest),
>
> > >                          onSuccess:
> > >                           function(transport, json) {
> > >                           //use and handle foo response data
> > >                          }
> > >                          ,
> > >                          on500:
> > >                           function(transport) {
> > >                           //handle error, inform user
> > >                           },
> > >                          onComplete: parseSendMessage
>
> > >                });
>
> > >       }
>
> > > php:
>
> > >       $request       = rawurldecode($this->getRequest()-
>
> > > >getRawBody());
>
> > > // HERE DECODING FAILS AND EXECUTION IS INTERRUPTED.
> > >       $requestObject = $zendJson->decode($request,
> > > Zend_Json::TYPE_OBJECT);
> > >       $msg           = $requestObject->msg;
> > >       $idNickRcv     = $requestObject->idNickRcv;
>
> > > On 8 Nov, 23:11, Walter Lee Davis <wa...@wdstudio.com> wrote:
>
> > > > Right. The best low-level way to translate JS to PHP and back again is  
> > > > using encodeURI or uncodeURIComponent on your JS side, and  
> > > > rawurldecode() or rawurlencode() on the PHP side. They are  
> > > > functionally identical, as long as you have set your PHP side to use  
> > > > UTF-8 as its default charset.
>
> > > > Walter
>
> > > > On Nov 8, 2010, at 4:42 PM, T.J. Crowder wrote:
>
> > > > > Hi,
>
> > > > > I don't know that it's the problem because I'm not a PHP person, but
> > > > > you're using the `escape` function to encode your parameters, and then
> > > > > decoding them with a PHP function called `urldecode`. JavaScript's
> > > > > `escape` function does _not_ URL-encode things, it does something
> > > > > similar but different and is almost certainly not what you want. I'm
> > > > > surprised it's working with other browsers, frankly, but perhaps
> > > > > that's my lack of PHP knowledge.
>
> > > > > The most reliable way to send parameters that I know is to send them
> > > > > URL-encoded, and to decode them as URL-encoded data. In Prototype, the
> > > > > easiest way to do that is to supply a plain object to the Ajax.Request
> > > > > method (which Prototype will correctly encode for you):
>
> > > > >    var jsonRequest = ...;
> > > > >    new Ajax.Request( // ...
> > > > >        parameters: {json: jsonRequest}
> > > > >        // ...
> > > > >    });
>
> > > > > ...and then retrieve the value just as you would any other value:
>
> > > > >    $request = $_POST["json"];
> > > > >    $requestObject = Zend_Json::decode($request); // Or your
> > > > > $zendJson, whatever that is
>
> > > > > But again, I'm not a PHP guy and could easily be missing something
> > > > > important here.
>
> > > > > FWIW,
> > > > > --
> > > > > T.J. Crowder
> > > > > Independent Software Engineer
> > > > > tj / crowder software / com
> > > > > www / crowder software / com
>
> > > > > On Nov 8, 5:47 pm, fashionpeople <fashionpeople.busin...@gmail.com>
> > > > > wrote:
> > > > >> Hi,
>
> > > > >> this is my ajax request that works perfectly on IE and FIREFOX, but
> > > > >> not in CHROME!
>
> > > > >>    function sendMessage(baseUrl, idNickRcv, msg) {
>
> > > > >>       var requestObject       = new Object();
> > > > >>       requestObject.idNickRcv = idNickRcv;
> > > > >>       requestObject.msg       = msg;
>
> > > > >>       var jsonRequest         = JSON.stringify(requestObject);
>
> > > > >>       if ((idNickRcv) && (msg)) {
>
> > > > >>          new Ajax.Request(baseUrl + '/usermsg/index/sendmessage', {
> > > > >>             method:     'POST',
> > > > >>             requestHeaders:{ Accept:'application/json' },
> > > > >>             parameters: escape(jsonRequest),
>
> > > > >>                          onSuccess:
> > > > >>                           function(transport, json) {
> > > > >>                           //use and handle foo response data
> > > > >>                          }
> > > > >>                          ,
> > > > >>                          on500:
> > > > >>                           function(transport) {
> > > > >>                           //handle error, inform user
> > > > >>                           },
> > > > >>                          onComplete: parseSendMessage
>
> > > > >>                });
>
> > > > >>       }
>
> > > > >> the problem is in action side server.
> > > > >> there is this PHP / ZEND FRAMEWORK code:
>
> > > > >> ....
>
> > > > >>       $request          = urldecode($this->getRequest()-
> > > > >> >getRawBody());
>
> > > > >>       $requestObject = $zendJson->decode($request,
> > > > >> Zend_Json::TYPE_OBJECT);
>
> > > > >> ....
>
> > > > >> Json decoding fails with Syntax Error, for this reason Ajax request  
> > > > >> no
> > > > >> works and is interrupted.
> > > > >> Chrome send a bad json string!
>
> > > > >> Any suggests?
>
> > > > > --
> > > > > 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 
> > > > > prototype-scriptaculous@googlegroups.com
> > > > > .
> > > > > To unsubscribe from this group, send email to 
> > > > > prototype-scriptaculous+unsubscr...@googlegroups.com
> > > > > .
> > > > > For more options, visit this group 
> > > > > athttp://groups.google.com/group/prototype-scriptaculous?hl=en
> > > > > .

-- 
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 prototype-scriptacul...@googlegroups.com.
To unsubscribe from this group, send email to 
prototype-scriptaculous+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/prototype-scriptaculous?hl=en.

Reply via email to