2011-01-04 9 views
1

Derzeit, wenn ein Benutzer auf die folgende URL lautet:Wie lade ich eine Seite auf einem Server mit Variablen, die einem Hashzeichen in der URL folgen?

www.foo.com/details.hmtl#id=123 

Die ‚details.html‘ Server zurückgibt und führt dann eine Client-seitige Ajax-Aufruf, sobald die Seite mit den Daten für das Element zu laden, zurückgeführt wird ID = 123. BBQ Plugin for JQuery

Gibt es eine Möglichkeit zum Abrufen der Parameter nach dem Hash-Zeichen auf dem Server, so dass zurückgegeben werden kann, wenn die Seite vom Server zurückgegeben wird, enthält die Details für id=123.

Dies ist erwünscht, damit Details immer noch angezeigt werden, ob Javascript im Browser des Benutzers aktiviert ist oder nicht. Und wenn sie Javascript aktiviert haben, können sie den Inhalt über Ajax ändern, indem sie auf die vorhandenen Schaltflächen auf der Website klicken.

Vielen Dank im Voraus für alle EDIT

helfen:

Die Seiten werden zur Zeit in der folgenden Weise zurückgegeben werden:

id = self.request.get("id") 
template_values= {'id': id} 
path = os.path.join(os.path.dirname(__file__), 'details.html') 
self.response.out.write(template.render(path, template_values)) 

Antwort

3

Sie können das nicht tun, weil der Browser die gerade sendet /details.html für Anfrage.

, wenn Sie benötigen Sie Parameter zum Beispiel verwenden können: zum ersten Mal können Sie den Benutzer auf dieser Seite /details.hmtl?id=123 dann die Anforderung des Benutzers speichern senden in dem Sitzungswert und leiten die Benutzer auf die reale Seite ohne Params und mit Hash /details.hmtl1d3123 dann die aktuelle Sitzung des Benutzers und rendern den Inhalt der Seite.

Das ist, wie Sie es tun können, ohne JS mit

Grüße NiL

+0

Danke, das klingt nach dem, was ich gerne tun würde. Können Sie vielleicht ein Beispiel zeigen, wie ich die Anfrage des Benutzers in der Sitzung speichern und auf die Seite ohne Parameter umleiten kann? Ich habe die Antwort bearbeitet, um den serverseitigen Code für die Rückgabe der details.html einzuschließen. – Cuga

+0

Nevermind, habe ich herausgefunden, wie man die Umleitung macht: Selbst.Weiterleitung ("/ details.html? id =" + id). Danke für Ihre Hilfe! – Cuga

-1

Warum verwenden Sie # für diese? Der erste Teil von NiLs Antwort ist die Verwendung einer tatsächlichen Abfrage? stattdessen, und ich würde das wiederholen. Aber nicht auf generische Seiten umleiten usw. Sie wollen eine Seite mit den Informationen über ID 123 darauf, also geben Sie das vom Server zurück! Sie entscheiden sich aktiv dafür, eine einzige Anfrage für eine Seite über ID 123 in einen Anfrage-generischen response-spezifischen anforderungsspezifischen Antwortzyklus zu verwandeln, ohne ersichtlichen Grund, und das ist für den normalen Fall, in dem der Benutzer JavaScript hat!

Verwenden Sie auf jeden Fall dynamische Sachen und ändern Sie die Seite für die zweite Anfrage, aber bis dahin wissen Sie bereits, dass der Benutzer Javascript hat. Für die erste Anfrage, bleiben Sie mit? Id = 123 und geben Sie sie zur vollständigen Seite.

Warum es komplizieren und verlangsamen?

+0

Weil es momentan so geschrieben ist. Ich habe vor, es neu zu schreiben, um sich so zu verhalten, wie du es beschreibst, aber ich muss erst herausfinden, wie es geht. Problem ist, dass die aktuellen Seiten erfordern JS, um etwas zu laden, so wurde die Frage gestellt, um die Machbarkeit der Optimierung der bestehenden Server-Funktion (durch Ergreifen der ID nach der #), anstatt die gesamte Seite zu wiederholen. – Cuga