dcsimg
www.webdeveloper.com
Results 1 to 6 of 6

Thread: document.write input type hidden will only pass string variable up to the first space

  1. #1
    Join Date
    Feb 2010
    Posts
    4

    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.)

    document.write ('<input type="hidden" name="address1" value="555 Drury Lane" >');


    and it still only passes the string up to the first space (555).

    I show the variable address_1 on my confirmation page and it shows the entire string.

    I checked what was being passed and it seems that the Javascript is the culprit (or more likely the Javascript creator - me)

    All my other variables (which don't have spaces) pass to the php script with no problems.

    I did a lot of searches but could not find any comprehensive solution to this particular issue. Any assistance would be appreciated.

  2. #2
    Join Date
    Dec 2003
    Location
    Bucharest, ROMANIA
    Posts
    15,428
    For the beginning make sure you use the same charset both in your document and your Data Base. utf-8 is desirable.

  3. #3
    Join Date
    Feb 2010
    Posts
    4
    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.

  4. #4
    Join Date
    Feb 2010
    Posts
    4
    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.

  5. #5
    Join Date
    Feb 2010
    Posts
    4

    Resolved

    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.

    Now, on to the next challenge???

  6. #6
    Join Date
    Dec 2003
    Location
    Bucharest, ROMANIA
    Posts
    15,428
    You may use the unicode notation to deal with special characters in javascript:

    http://javascript.about.com/library/blunicode.htm
    http://rishida.net/tools/conversion/

    For instance &#233; converted in unicode+hex (javascript "escapes") is "\u00e9"

Thread Information

Users Browsing this Thread

There are currently 1 users browsing this thread. (0 members and 1 guests)

Tags for this Thread

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •  
HTML5 Development Center



Recent Articles