2009-07-06 6 views
13

Ich habe legitime Gründe zu tun, was ich versuche zu erklären. Ich habe eine bestehende Website sagen abc.com, die regelmäßige Seiten usw. alles in PHP geschrieben hat. Jetzt möchte ich die Site AJAXify, d. H. Wenn ein Benutzer auf einen Link klickt, sollte er den Link mit AJAX abrufen und den Seiteninhalt ersetzen. Dies ist der einfache Teil und ich kann es mit jQuery get Funktion erreichen.AJAXify Website

Jetzt kommt das Problem, wenn der Benutzer die Seite bucht. Ich kann Hash-Tags verwenden, um anzugeben, ob der Benutzer sich auf einer anderen Seite befindet, aber anstatt JavaScript zu verwenden, um die neue Seite erneut abzurufen, ist es möglich, sie beim Aufruf der Seite direkt mit PHP abzurufen.

Können Sie mir bitte einen Überblick darüber geben, wie Sie das Obige erreichen können. Diese Funktionalität ähnelt der von Facebook.

Vielen Dank für Ihre Zeit.

+2

Ich weiß nicht, warum das abgelehnt wurde, es ist eine vollkommen legitime Frage. –

+1

das Ajax-Bit ist wirklich neben dem Punkt, was Sie wissen wollen ist, wenn PHP Anker-Tags lesen und umleiten kann. dh, können Sie auf mainpage.php # about_us (mit Lesezeichen versehener Link) testen und zu aboutus.php umleiten (direkter Link zum Inhalt, den der Benutzer beim Bookmared betrachtet). Ich kenne die Antwort nicht, aber ich schlage vor, die Frage zu klären. –

+0

@musicfreak: einverstanden, ich gab es ein upvote, um es wieder in positive Zahlen –

Antwort

3

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

Wenn Sie mehr Inhalt laden, wenn der Benutzer auf die Seite klickt, achten Sie darauf, das Hash-Tag immer korrekt zu ändern, um anzuzeigen, was auf der Seite angezeigt wird.

Hier ist a quick example um mit zu spielen. Klicken Sie auf einen Namen und notieren Sie das Hash-Tag. Das entsprechende Javascript sieht folgendermaßen aus:

+0

in Ihrem Beispiel zu bekommen, wenn ich die Zurück-und Vorwärts-Tasten verwenden, erinnert es sich nicht an den vorherigen Zustand. –

-1

Der beste Weg, dies zu tun ist, eine index.php zu haben, die alle anderen Seiten basierend auf den URL-Teilen danach lädt. Zum Beispiel:

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

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

Eine Möglichkeit, dieses Problem zu umgehen, wäre, einen Link "Link zu dieser Seite" auf jeder Seite zu platzieren, die diese Form der URL enthält, damit die Benutzer ein Lesezeichen setzen können.

3

Die Antwort ist nein, Sie können den Wert der URL-Hash-Server-Seite nicht erhalten. Siehe How to get Url Hash (#) from server side.

Sie müssen den Hash-Wert clientseitig erhalten und eine zusätzliche Anfrage stellen.

+0

Dies ist der Kern der Frage, der Wert muss aufDocumentReady abgerufen werden und dann verwendet werden, um die relevanten Ajax Funkiness zu aktivieren. –

1

jQuery Geschichte ist meine bevorzugte Wahl. Es kann hier gefunden werden: http://www.balupton.com/projects/jquery-history/ Bietet Cross-Browser-Unterstützung, Bindung an Hashes, überladene Hashes, den ganzen Rest.

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

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

Insgesamt sind sie beide gut dokumentiert, unterstützt und funktionsreich. Sie haben auch eine Kopfgeldfrage hier How to show Ajax requests in URL?

0

Ich habe kürzlich einen Artikel über dieses genaue Problem geschrieben. Der Artikel ist Tutorial-Stil. Unter Verwendung des Hash-Änderungsereignisses wird gezeigt, wie der URL Parameter hinzugefügt werden, die Ajax-Anforderungen mit einer unbegrenzten Anzahl von Parametern auslösen können und daher in einer ziemlich skalierbaren Weise funktionieren.

Sie können weitere Informationen finden Sie hier bei http://andresgallo.com/2012/06/08/ajaxifying-the-web-the-easy-way/

Teil I wird beschrieben, wie die Hash-Links zu reagieren, während Teil II beschreibt, wie die Daten in der Hash-URL auf eine Ajax-Anforderung daher senden so dass Sie tun so ziemlich alles, was Sie aus den Hash-Tags in Ihrer URL heraus wollen.