For Programmers: Free Programming Magazines  


Home > Archive > PHP Language > January 2008 > Re: problem with sending json encoded data via ajax to a php script









You are viewing an archived Text-only version of the thread. To view this thread in it's original format and/or if you want to reply to this thread please [click here]

 

Author Re: problem with sending json encoded data via ajax to a php script
Anthony Levensalor

2008-01-09, 7:02 pm

Pugi! said:

> I guess the solution might be in the use of escape (javascript) and
> urldecode (PHP), but I have not succeeded in making it work yet. Do
> you use those functions and the data you send, on the querystring or
> on the complete url? Other problem is that escape and urldecode are
> not an exact match.
>

use encodeURIComponent in javascript before you assemble as JSON, and
then send it via post through the XHR.

use XMLHttpRequest.setRequestHeader(
"Content-Type", "application/x-www-form-urlencoded")

To set up your XHR for POST, then assemble the data you want to send in
this format:

"name=value&name2=value2&....nameN=valueN"

And where you would normally send null in your XHR, send the data instead.

The great thing about encodeURIComponent() is that all that translation
is done at the server level on most servers (all the ones I've ever
worked on), so once it gets to PHP, it should be okie doke.

If not, contact me privately (the email is in my sig), and we can talk
about the PHP side, this isn't the place for that.

All the best,
~A!



--
anthony at my pet programmer dot com
Anthony Levensalor

2008-01-09, 7:03 pm

*** Pugi! *** wrote a whole bunch of nifty stuff On 1/9/2008 1:35 PM:
> On 9 jan, 16:29, Anthony Levensalor <killf...@mypetprogrammer.com>
> wrote:
>
> This really was very helpful.
> This is how I use it:
> - clientside (javascript):
> var data = new Object();
> data.field1 =
> encodeURIComponent(document.formname.field1.value.trim());
> ...
> qs = YAHOO.lang.JSON.stringify(data);
> ...
> YAHOO.util.Connect.asyncRequest('GET', 'mywebpage.php?data='+qs,
> callback);
>
> - serverside (PHP)
> $data = json_decode(stripslashes(sanitize($_GET[
'data'])), true);


Just do the json_decode call first, and then do the sanitizing and
stripslashing and the like. That should solve your quotes problem.

Glad I could help!

~A!





--
anthony at my pet programmer dot com
Anthony Levensalor

2008-01-10, 4:01 am

On 1/10/2008 3:44 AM, Pugi! wrote:
> On 9 jan, 19:49, Anthony Levensalor <killf...@mypetprogrammer.com>
> wrote:
>
> Without stripslashes no json_decode.
> Input like c:\my documents\test\test.pdf doesn't look to good either.
>
> Pugi!


Ok, can you send me a php snippet? Run the sig all together and
translate the at and dot, shoot me an email, I'll take a closer look.

~A!
--
anthony at my pet programmer dot com
Sponsored Links







Also available: Server administration forum archive | Web Design forum archive | Software forum archive | Hardware reviews archive

Copyright 2008 codecomments.com