document.write input type hidden will only pass string variable up to the first space
Hi:
Let me preface this with the usual disclaimer: I am new to this and have only been programming with Javascript, PHP for about 2 weeks now and have been lucky enough to have resolved the issues I have encountered. This one however is puzzling to me.
I have a HTML form created that collects member information. It calls, on submit, a confirmation page that lists all the data fields entered. This all works great. However, when I then post the variables from the first html form page from my second confirmation html page to my PHP script, using document.write with input type=hidden and inserting the address variable into the value field, the Javascript only passes this variable up to the first space. It is the only variable I pass that has a space in it.
I have verified that the variable does indeed contain the whole address and I have also verified when I execute the following:
document.write ('<input type="hidden" name="address1" value='+address_1+'>');
the address_1 parameter passed to the php script only passes the string up to the first space.
I even tried to put fixed text in there instead of a variable (e.g.)
Thanks for responding Kor, I appreciate your suggestion. They are using the same character set as far as I can tell.
To add to the investigations I have done, I am capturing this information (the string variable) both with document.writes in my html file and echos in my PHP file (several different locations though the programs) prior to writing anything to the database to verify its content. In fact, I have commented out the actual write to the database so I don't fill it with garbage. Of course, I discovered the problem originally the first time I wrote to the database - so I have tried that.
A couple of other things to add here. I originally did not have a "confirmation" page, just a submit after filling in the fields and that worked as advertised, including passing the entire string. Also, I think I have actually captured what is being passed to the PHP program for this field and I believe it looks like (using the previous example) 555+Drury+Lane.
Now, I can probably get this to work by parsing the string into several different variables but this seems to be a little messy to me. I would really rather it passed the entire string as I believe it should.
Kor, I will reverify your suggestion again just to make sure. Thanks again for your suggestion.
Kor, my html files were actually windows-1252 charset. I changed them to utf-8 and also verified that PHP was UTF-8 enabled (MB_STRINGS was enabed) but I still have the same issue.
Well, I came upon another site discussing a different issue but related to this variable-space issue. It seems that Javascript's normal behaviour is to replace + signs instead of spaces in a string when passing a string variable. So, someone suggested doing a string replaceall of spaces with the ascii code for spaces as follows;
address_1= address_1.replace(/ /g, "ascii space character"); (I could not put the value in between the quotes because in preview it shows as a space but the code is "& # 32 ;" spread apart so it is not interpreted as a space by this document.
IT WORKS. Now the variable passed is correctly posted into the database with spaces as required.
Bookmarks