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