2010-11-23 21 views
0

Wenn ich meine PHP-Seite lade, füge ich einige Daten an. Zum Beispiel MyPage.php? Wert = etwas. Wie erwartet, wenn ich mit dem Zurück-Knopf hin und her gehe, lädt es immer mit denselben angefügten Daten. Ich will das nicht. Ich möchte, dass nach dem Laden der Seite ich in der Lage sein sollte, den Verlauf zu ändern, um nur MyPage.php OHNE die angehängten Daten zu speichern. Jetzt, wenn ich den Zurück-Knopf verwenden würde, würde es nur MyPage.php laden. Wie kann ich das tun - javascript, jquery, php, alles ???Javascript-Historie ändern

Wenn es eine Möglichkeit gibt, dies zu tun, ohne das History-Objekt zu berühren, ist das auch in Ordnung. Ich nehme nur an, dass es einige Geschichte zwickt. Ich bin auch in Ordnung, wenn es auf der Client- oder Server-Seite Feinabstimmung braucht.

+0

Sie wissen, dass Ihre Benutzer den Browserverlauf als ** Feature ** ansehen können. Selbst wenn Sie es deaktivieren möchten, sind sie möglicherweise nicht, und schließlich läuft der Browser auf * ihrem * Computer, nicht auf Ihrem. –

Antwort

1

Soweit ich weiß, ist es nicht möglich, die Geschichte so zu optimieren, noch ist es ein guter Weg, damit umzugehen.

Sie können ein Cookie verwenden, um zu bestimmen, wann eine Seite mehr als zweimal geladen wird, oder die Daten stattdessen in einer Sitzungsvariablen speichern und nach Abschluss der Verarbeitung löschen.

1

Ich nehme an, dass die Daten mit GET-Methode angefügt werden. Wenn Sie POST verwenden, wird nach MyPage.php kein Text angehängt, aber dennoch können Daten an die Seite übergeben werden.

0

Die Geschichte ist die Geschichte. Es ist ein bisschen ein Hack, das zu ändern (und Sie werden wahrscheinlich andere Probleme haben, wenn Sie das tun).

Es ist besser, entweder überhaupt keine Abfragezeichenfolge zu haben und js oder serverseitige Logik zu verwenden, um die Aktion zu bestimmen, oder js oder serverseitige Logik zu haben, um die zweite Anfrage zu ignorieren.

0

Wenn es Ihnen gut geht, die Geschichte zu optimieren, dann können Sie wahrscheinlich dazu schauen.

history.replaceState({}, document.title, "MyPage.php"); 

Dies wird die aktuelle window.location in "MyPage.php" ohne Seitenaktualisierung umschreiben.