"location.reload()" loses POST/SESSION data? (F5 / Ctrl+R keeps data?)

browser-refresh, javascript, session

Solution

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`

Problem

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.

Original source