Frage

Ich habe berechtigte Gründe zu tun, was ich zu erklären versuchen. Ich habe eine bestehende Website abc.com sagen, welche in PHP geschrieben regelmäßigen Seiten usw. alles hat. Nun möchte Ich mag die Website AJAXify das heißt, wenn ein Benutzer auf einen Link klickt, sollte es die Verbindung mit AJAX holen und den Seiteninhalt ersetzen. Das ist der einfache Teil, und ich kann es erreichen mit jQuery-Funktion bekommen.

Nun das Problem kommt, wenn der Benutzer die Seite Lesezeichen. Ich kann Hash-Tags verwenden, um anzugeben, ob der Benutzer auf einer anderen Seite ist, sondern Javascript für die Verwendung der neuen Seite wieder zu holen, ist es möglich, sie zu holen direkt mit PHP, wenn die Seite aufgerufen wird.

Können Sie bitte geben Sie mir einen Überblick darüber, wie die oben zu erreichen. Diese Funktionalität ist ähnlich dem, was Facebook hat.

Vielen Dank für Ihre Zeit.

War es hilfreich?

Lösung

Es ist ein ziemlich einfaches Verfahren von (1) Parsen der Hash-Tag, und (2) Laden der Inhalte über Ajax wie gewohnt.

Wenn Sie mehr Inhalte laden, wenn der Benutzer auf der Seite klickt, nur sicher sein, immer korrekt den Hash-Tag ändern zu reflektieren, was auf der Seite ist.

Hier ist ein kurzes Beispiel zu spielen, um. Klicken Sie auf einen Namen und notieren Sie den Hash-Tag. Die entsprechende Javascript sieht wie folgt aus:

// Go straight to content if it's in the hash.
$(document).ready(function(){
   load_story_from_hash();
});

// Call this function whenever user clicks on a hash link
function set_hash(hash){
   window.location.hash = hash;
   load_story_from_hash()
}

// Actually load content based on the hash in the URL
function load_story_from_hash(){

   var hash = window.location.hash;
   hash = hash.replace(/^#/, '');

   if (hash) {

      $('#post_container').load(hash+'.html', {}, function(){
         $.scrollTo('#post_container', 1000);
      });

   }

}

Andere Tipps

Die Antwort ist nein, man kann nicht den Wert der URL-Hash-Server-Seite bekommen. Siehe Wie URL Hash (#) von Server-Seite erhalten .

Sie werden die Hash-Wert Client-Seite und machen eine zusätzliche Anfrage bekommen.

jQuery Geschichte ist meine bevorzugte Wahl. Es finden sich hier: http://www.balupton.com/projects/jquery-history / Cross-Browser-Unterstützung, um Hashes Bindung, Überlastung Hashes, der ganze Rest.

Es gibt auch eine Ajax-Erweiterung für den jQuery Ajaxy genannt, so dass es leicht Ihre Webseite in eine richtige Ajax-Anwendung für Server-Seite ändert, ohne dass ein Upgrade und die verbleibenden SEO und JS-Behindertengerecht: http://www.balupton.com/projects/jquery-ajaxy/

Dies ist die Lösung von solchen Seiten wie http://wbhomes.com.au/ und http://www.balupton.com

Insgesamt sind sie beide gut dokumentiert, unterstützt und reich an Funktionen. Sie haben auch gewonnen eine Prämie Frage hier Wie Ajax-Anfragen zu zeigen, in URL?

Nun, Sie eines dieser Tools verwenden können, oder Ihre eigene Rolle. Verwendet window.location.hash zusammen mit anderen Tricks.

Ich schrieb vor kurzem einen Artikel über diese genaue Frage. Der Artikel ist Tutorial Stil. Unter Verwendung der Hash-Änderungsereignis, das zeigt, wie im in die URL-Parameter hinzuzufügen, die AJAX-Anfragen mit unendlich vielen Parametern auslösen kann daher in einer ziemlich skalierbare Art und Weise funktioniert.

Sie können mehr über sie finden hier unter http : //andresgallo.com/2012/06/08/ajaxifying-the-web-the-easy-way/

Teil I werden beschrieben, wie die Hash-Links zu reagieren, während Teil II beschreibt, wie die Daten in der Hash-URL auf eine Ajax-Anforderung daher schicken so dass Sie so ziemlich alles tun, sie aus den Hash-Tags in Ihrer URL möchten.

Der beste Weg, dies zu tun, ist eine index.php zu haben, die alle andere Seiten auf der Basis der URL Teilen nach dem Laden. Zum Beispiel:

http://www.example.com/index.php/reports / Mitarbeiter / hoursWorked

In diesem Fall index.php läuft, kann er sehen, was angefordert Sein ist die Stunden Bericht gearbeitet, und diese Inhalte laden. Das Problem ist, wenn index.php lädt dann alle anderen Inhalte nach diesem mit AJAX, die URL im Browser wird sich nie ändern.

Ein Weg, um dieses Problem auf jeder Seite einen „Link zu dieser Seite“ Link zu setzen wäre, dass diese Form der URL für Benutzer Lesezeichen enthält.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top