I’d like to submit a form using GET but without passing the value of an input field in the URL.
(Some background may be helpful: I’d like to use a form so that the user can enter their name and press Enter in order to proceed, but all I actually want them to do is go to the next page, and it’s important the URL doesn’t have parameters in.)
Currently the displayed URL of the next page /nextpage?username=fred:
<form name="entername" action="/nextpage" method="get">
<label for="name">Enter your name: </label>
<input id="username" name="username"><br/>
<input id="submitme" type="submit" value="Submit" class="button"></form>
Is there a way it could go simply to /nextpage instead?
I guess “use POST” is one answer, but I’d rather avoid that if possible (because then if the user refreshes the next page, they get a scary ‘Resubmit information?’ alert).
So I’m just wondering if there’s any other way besides POST.
The proper solution will be to make a POST request, and when you process it, to redirect the user to the answer page, thus causing the user’s browser to make a GET request to it.
This ensures that if the user refreshes his answer page, it will not cause a resubmition alert . See more detailed description of this POST/REDIRECT/GET pattern
The somewhat hacky solution will be to use onsubmit javascript handler, which will set some cookies reflecting the form input fields, and then will remove the fields, so that they will not appear in the user’s urlbar. The server should then read the submited values from the cookies.
Here is an example of the cookie hack, using jquery and a php script as a backend processor: