Hi again, I probably should have said that if you need to URL-encode anything on the JavaScript side, the JavaScript functions for that are `encodeURI` and `encodeURIComponent` (not `escape`), where the latter is the most useful. More: https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/encodeURI https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/encodeURIComponent
HTH, -- T.J. :-) On Nov 8, 9:42 pm, "T.J. Crowder" <[email protected]> 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 <[email protected]> > 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 [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.
