As my first web app I developed a very simple survey. Random questions are being asked from the user anytime the page refreshes. The answer is sent to a cgi script using post to save the answers to the database.
However, when the user presses the submit button it automatically goes to the page which is responsible for processing the data and since it doesn't have any output it is a blank page. Now if the user wants to answer another questio开发者_如何学JAVAn they have to press the "back" in the browser and refresh the page so a new question pops up. I don't want this.
I want it in a way that when the users pressed submit, the answers go automatically to the processing script and the page refreshes itself with a new question or at least after processing it redirects to the main survey page with a new question.
You want to implement this: https://en.wikipedia.org/wiki/Post/Redirect/Get
It's much simpler than it sounds. The CGI script that receives the POST must simply produce the following output:
Status: 303 See other
Location: http://lalala.com/themainpage
You can also send a HTTP header from your processing script:
Location: /
After you have processed your answer, you would send the above header. I would recommend you append a random number query string. e.g. python example (assuming you're using the python CGI module):
#!/usr/bin/env python
import cgitb
import random
import YourFormProcessor
cgitb.enable() # Will catch tracebacks and errors for you. Comment it out if you no-longer need it.
if __name__ == '__main__':
YourFormProcessor.Process_Form() # This is your logic to process the form.
redirectURL = "/?r=%s" % random.randint(0,100000000)
print 'Content-Type: text/html'
print 'Location: %s' % redirectURL
print # HTTP says you have to have a blank line between headers and content
print '<html>'
print ' <head>'
print ' <meta http-equiv="refresh" content="0;url=%s" />' % redirectURL
print ' <title>You are going to be redirected</title>'
print ' </head>'
print ' <body>'
print ' Redirecting... <a href="%s">Click here if you are not redirected</a>' % redirectURL
print ' </body>'
print '</html>'
<html>
<head>
<meta http-equiv="refresh" content="0;url=http://www.example.com" />
<title>You are going to be redirected</title>
</head>
<body>
Redirecting...
</body>
</html>
See meta-refresh
drawbacks and alternatives here.
精彩评论