2010-06-19 5 views
0

J'ai un problème embarrassant avec essayer de faire un programme d'état ajax/statique. Ce que j'essaie de faire est de permettre à une application statique liée d'avoir des liens dynamiques ajax et tout va bien jusqu'à ce que la page soit rafraîchie.Couple PHP avec les états AJAX

Le problème:

PHP ne voit pas le hachage de sorte qu'il ne voit que la demande URI d'origine. Donc PHP charge la page d'origine, mais JQuery (Javascript) remplace cette page par celle que je veux après le #. Exemple:

url: localhost/index.php #/recherche

Il est très bien pour naviguer vers cette page mais en appuyant sur refresh php va pour:

url: localhost/index.php

puis javascript va pour:

url: #/recherche

Je charger en fait deux pages ... qui suce.

Ceci est un problème qui a dû se produire et j'ai remarqué que Facebook l'a fait pour aider les temps de chargement (même raison que je veux le faire). Du mieux que je peux dire, ils sont capables de détecter le hachage de manière fiable et de remplacer $ _SERVER ['REQUEST_URI'] par son contenu, donc quand vous rafraîchissez vous obtenez localhost/search de localhost/index.php #!/Search.

Je me demandais si quelqu'un avait un petit correctif pour cela. J'ai regardé dans le javascript côté serveur mais après beaucoup de googling je n'ai pas vraiment eu une image claire.

Merci à l'avance

+0

J'ai oublié d'ajouter que les cookies ne fonctionneraient pas dans cette situation. Si l'utilisateur ne se déplace pas séquentiellement à travers le site, il verra une page qu'il ne veut pas. – sammaye

Répondre

0

Le navigateur lui-même n'envoie même pas la partie de hachage de l'URL quand il fait une demande. Vous devrez toujours charger deux pages. Le mieux que vous puissiez faire est de faire de la page initialement chargée un simple bootstrap HTML Ajax statique. De cette façon, le pageload initial peut être mis en cache, léger sur les ressources et rapide à charger.

+0

Oui c'est ce que je pensais, je suppose que j'espérais qu'il y avait un meilleur moyen. J'ai d'abord pensé à lancer javascript avant mon php qui ne laisserait pas d'empreinte sur la page (au dessus des balises html) mais oui un bootstrapper semble être le seul moyen, je vais laisser ça ouvert pour un peu plus longtemps quelqu'un en a D'autres idées – sammaye

+0

Eh bien, avec une page statique comme je l'ai décrit, vous exécutez techniquement votre JavaScript avant votre PHP (juste avant que le document HTML soit rendu). Mais je sais ce que tu veux dire. Je suis aussi curieux, mais douteux, qu'il y ait un autre moyen. –

+0

Avez-vous un exemple de lien d'un bootstrappeur décent, car je n'arrive pas à faire fonctionner mon javascript auparavant sans avoir besoin d'actualiser la page. Mon cerveau ne cesse d'être confus par la superposition entre php et javascript. – sammaye