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.
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 hitCtrl + F5
, but not withCtrl + R
Sources:
https://superuser.com/questions/205279/ctrlf5-vs-ctrlr-on-browsers
Browser issue in Ctrl-R
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. Usehref="#"
to prevent it from loading a "new" page or addreturn false;
at the end of youronclick="..."
code.Try using
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 ofF5
in scripting, whilstCtrl+F5
/Ctrl+R
can be simulated usinglocation.reload(true)
.Also, as ThiefMaster mentioned, you're missing
;return false
at the end of youronclick
statement, or you should set thehref
tojavascript:void 0
* to prevent the browser from following the link.*Or any other piece of JavaScript that returns
undefined