Persisting Variables Between Page Loads
HTTP being stateless, retaining values across page reloads requires external storage. Here's how to overcome this limitation:
Query String
On form submission via GET, the query string (?parameter=value) carries form field data. Set a hidden field's value accordingly:
<form method="GET"> <input type="hidden" name="clicked" value="true" /> <input type="submit" /> </form>
On page load, extract the query parameter:
function getParameterByName(name) { var regex = new RegExp("[\?&]" + name + "=([^&#]*)"), results = regex.exec(location.search); return results === null ? "" : decodeURIComponent(results[1].replace(/\+/g, " ")); } var clicked = getParameterByName('clicked');
Web Storage
HTML5 provides Web Storage, allowing for browser-based data storage. SessionStorage stores data only during the current browsing session:
sessionStorage.setItem('clicked', 'true');
On page load, retrieve the stored value:
var clicked = sessionStorage.getItem('clicked');
Cookies
Cookies are primarily used for server-side data storage but can also be leveraged for client-side storage. jQuery simplifies cookie management:
$.cookie('clicked', 'true', {expires: 1}); // expires in 1 day
To read the cookie on page load:
var clicked = $.cookie('clicked');
Remember to un-set the cookie when no longer needed:
$.cookie('clicked', null);
Window.name
While not recommended, window.name can store strings across page refreshes and even domains:
window.name = "my value";
On page load, access the stored value:
var value = window.name;
The above is the detailed content of How Can I Persist Variables Across Page Loads in a Stateless HTTP Environment?. For more information, please follow other related articles on the PHP Chinese website!