问题
I want to create a button to reload a page without losing $_POST
data and $_SESSION
.
On the web, I found this piece of code:
onclick="document.location.reload();"
And here is the code of my button:
<a class="button" href="" style="font-size: 0.7em; padding: 5px 10px;" onclick="document.location.reload();">Recharger la page</a>
But when I click on the button, I lose $_POST
data and $_SESSION
.
If I try with the keyboard command Ctrl+R (Chrome) or F5 (Firefox, IE9), the browser is showing an alert to notify me that I'm again trying to submit form. If I accept, it works.
How can I reproduce this kind of browser-refresh with a JavaScript command? Or is the code of my button wrong?
Thank you very much for your help.
回答1:
Try using
location.reload(true);
This will perform a "hard" refresh, not just rebuilding the DOM but also re-retrieving any resource from the server.
You can read more at the Mozilla Developer wiki.
Apparently, location.reload()
is the equivalent of F5
in scripting, whilst Ctrl+F5
/ Ctrl+R
can be simulated using location.reload(true)
.
Also, as ThiefMaster mentioned, you're missing ;return false
at the end of your onclick
statement, or you should set the href
to javascript:void 0
* to prevent the browser from following the link.
*Or any other piece of JavaScript that returns undefined
回答2:
This should happen in any case as long as you are on the same location you POSTed to. However, it's common to redirect after a POST request to avoid exactly what you are trying to do.
The reason why your code doesn't work is the fact that href=""
will cause a GET request to the current URL. Use href="#"
to prevent it from loading a "new" page or add return false;
at the end of your onclick="..."
code.
回答3:
The Ctrl + R
refreshes the page and clears your cache. And I guess you're using Internet Explorer? Some other browsers behave like this when you hit Ctrl + F5
, but not with Ctrl + R
Sources:
https://superuser.com/questions/205279/ctrlf5-vs-ctrlr-on-browsers
Browser issue in Ctrl-R
来源:https://stackoverflow.com/questions/10861176/location-reload-loses-post-session-data-f5-ctrlr-keeps-data