2010-07-20 3 views
4

J'ai une page AJAXed, mais j'offre également une chaîne de requête à l'utilisateur afin qu'il/elle puisse taper dans la chaîne de requête à l'URL pour voir la même page encore. (Pensez google maps et sa fonctionnalité "lien de partage").Jquery/javascript détecte et capture les actualisations de page?

Lorsque la requête AJAX se produit, je mets à jour la chaîne de requête présentée à l'utilisateur, mais l'URL réelle ne change pas. Le problème est que si un utilisateur actualise la page, tous les éléments DOM créés à partir d'AJAX disparaissent. Ce que je veux faire, c'est que javascript capture l'événement d'actualisation, et au lieu d'actualiser la page, redirige l'utilisateur vers la page plus la chaîne de requête.

dire si la chaîne de requête est: ?data=blah&stuff=bleh

alors au lieu de la page rafraîchissante retour à www.example.com, rafraîchissante conduirait l'utilisateur à www.example.com/?data=blah&stuff=bleh

Répondre

1

Vous ne pouvez pas changer le querystring ... sans le navigateur fait quitter la page et en chercher un nouveau (sorte de tuer le point de AJAX).

Vous pouvez aller à un hachage si, comme ceci: www.example.com/#data=blah&stuff=bleh

Dans votre script vient définir le window.location.hash, par exemple:

window.location.hash = "data=blah$stuff=bleh"; 

Lorsque votre page se charge, vous aurez besoin de réellement utilisez le hachage ... par exemple: en l'utilisant comme paramètre de données pour faire le même appel AJAX que vous avez fait auparavant.

+0

Je pensais en fait à ce que la page redirige ACTUELLEMENT vers l'URL de la chaîne de requête lors de l'actualisation de la page, mais en laissant l'URL identique dans les autres cas. Cependant, votre technique est probablement une meilleure solution, je vais l'essayer! –

+0

Je l'ai essayé et ça marche à merveille. Cependant, je viens de réaliser un problème. Puisque les hachages sont destinés à être utilisés pour la navigation dans Inpage, la saisie d'une URL hachée dans la barre d'adresse ne provoque pas réellement l'actualisation de la page. Existe-t-il un moyen de forcer une actualisation lorsque javascript détecte ce changement? –

+0

@Razor - Je suis curieux ... si vous * voulez * que la page soit rafraîchie, pourquoi utilisez-vous AJAX? –

Questions connexes