|
Posted by Anthony Levensalor on 01/09/08 18:49
*** 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:
>> 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
>
> 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
Navigation:
[Reply to this message]
|