Scenario:
How do you deal with this situation?
Use ajax for portions of the page that needs to update, not the entire thing. For that you should use templates. When you want to still preserve the back button for your various state changes on the page, combine them with # achors to alter the url (without forcing the browser to issue another GET).
This is the backbone of a navigable site that people can use. When you shovel all your functionality into AJAX calls and callbacks, you're basically forcing your users into a single path to access the features and content that they want -- which is totally against how the web is meant to function. People rely on the address bar and the back button.
The hit for reloading the header and navbar is minimal compared to the hassle of breaking the browser's navigation UI. A more appropriate example of AJAX would be to allow users to play the game in the main window while they can browse through a list of other content in a nav pane.
AJAX is not the best solution for navigation for exactly the reason you describe. The hit for reloading the header and navbar is minimal compared to the hassle of breaking the browser's navigation UI.
Cookies. The only way to save information after the user leaves a page and comes back is with cookies.
Better way to do this is
0. user goes to your page
1. A page is loaded with complex UI based on what is saved in the users cookies (default if no cookie)
2. user does some actions, which are saved into the cookie
3. user goes to another page
You could force the page to refresh when the back button is pressed which will then pull the updated data from the server.
<META http-equiv="Cache-Control" content="no-cache">
<META http-equiv="Pragma" content="no-cache">
<META http-equiv="Expires" content="-1">
you might also want to take a look at Real Simple History and see if you can take advantage of their techniques to utilize the Back button.
Whatever data is passed to the next page would need to also be passed back to change the UI to the way it needs to be.
This could be done with cookies, or it could be done using post data/server side logic. Just pass the values to the second page, and when the user wants to come back just be sure to pass them back as well and alter the interface depending on the values. You could even use a session for this is you wanted, but I think that may be overkill if this is the only place you will need it.
Metropolis
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With