The reason + gets turned into a space is because your incoming data is being "urldecoded" (or "unescaped") by PHP, and +, just like %20, gets turned into a space.
The reason this is happening to you when you use ajax is because when you pass a String as the "data" parameter, it is assumed that it's already escaped. When you don't use ajax, the browser takes care of escaping the + for you (it is escaped as %2B). To fix your problem, you need to change line 9 and wrap this.value in encodeURIComponent(this.value). But more importantly, you really don't need to be generating the parameter string like this. You could just as easily generate a parameter object and let jQuery deal with it. Something like: var inputs = {}; $(':input', this).each(function () { inputs[this.name] = this.value; }); ... data: inputs, ... BUT, more importantly, I suggest you just use Mike's form plugin, found here: http://www.malsup.com/jquery/form/ Then you could replace the whole thing with: $('#lightning').ajaxForm({ type: 'POST', dataType: 'json', success: function(json) { // do whatever here. } }); Good luck with it. --Erik On 8/26/07, barophobia <[EMAIL PROTECTED]> wrote: > > Hello, > > I'm having a weird issue with data being passed through $.ajax. If I > submit my form through normal means I do not witness the unexpected > behavior. Only when I submit the form through $.ajax does it happen. > > The problem is that I'm trying to submit an email address with a + > sign in it. Firebug even says that I'm submitting > "[EMAIL PROTECTED]" but PHP says that I've submitted "email > [EMAIL PROTECTED]". > > It would seem that this is PHP's fault since Firebug reports the > correct data. But that's why this is so weird. When I take $.ajax out > of the loop PHP says that I have submitted "[EMAIL PROTECTED]". > > Here is the jQuery code I am working with: > > http://www.pastebin.ca/671971 > > Maybe it's really simple and I just don't see it? > > > > Thanks, > Chris. >