views:

1233

answers:

4
+3  Q: 

Ajax deep linking?

I have made a flex app deep link before but now I want to make an ajax app deep link.

I have no idea where to start.

I assume I need a way to listen for when the #hash in the url changes and be able to read it. And I assume I need a way to update the #hash in the url.

Does anyone know how to do all that?

Thanks!

+1  A: 

have a look at SWFAddress (deep linking for both Flash and Ajax)

UPDATE: if you use jQuery look at their jQuery Address

Gidon
+2  A: 

You're on the right track.

For each state of the ajax page that you want to be able to link to, change the hash tag:

window.location.hash = "this_state"

When the page loads you'll need to check if the window.location.hash value matches one of your states and if it does make the app go to that state. ("Listening" for the change of the hash tag is the page loading.)

This way your users can bookmark and share the states, making for a much more usable app, so props for caring about it.

edeverett
What you said works somewhat but when I hit the back button the hash changes but the page doesn't reload so my script is unaware. I think this requires some way of listening for the hash to change.
John Isaacks
Yeah, you're right! It works fine in FF for my example, but differently in IE and Webkit. What would add force a page to refresh? Possibly by adding to the window.history object at every state change - adding a different query string as well as the hash might do it. Otherwise I suppose you could poll the window.location every so often: There isn't a onhashchange event as far as I know.
edeverett
There's a jquery plugin (http://plugins.jquery.com/project/history) for managing the window history
BC
+3  A: 

You may found my article at http://blog.onthewings.net/2009/04/08/deep-linking-for-ajax/ useful. It was made for my Web 2.0 course in the university.

Andy Li
Sorry for the broken link, fixed. Thanks for the down vote so that I notice it :P
Andy Li
A: 

If you're using jquery you might want to have a look at this:

Deep Linking with jQuery Address plugin

gomezuk