Frage

Ist es möglich, eine derartige HTTP-Antwort zu machen, dass der Browser ignoriert und hält die zuvor angezeigte Seite zeigt?

Ich meine das folgende Szenario vor:

a) Benutzer klickt auf etwas

b) einige POST gehen an den Server (oder GET, aber sie als interessanter mit POST-Stick)

c) Server entscheidet, aus irgendeinem Grund, dass es nicht die Antwort zu diesem Zeitpunkt senden will

d) Server sendet Antwort speziell gestaltete

e) Browser die Fehlerseite nicht angezeigt wird, zeigt nicht die leere Seite, nicht überall umleiten, lädt nicht - nur immer wieder zeigt, was es zeigt, als ob der Benutzer nie das Formular abgeschickt

PS Natürlich kann es mit AJAX gewickelt werden, aber ich frage, ob nackte Knochen nicht-Javascript-Lösung ist möglich

War es hilfreich?

Lösung

Versuchen Sie HTTP Rückkehr 204 No Content. Siehe die Beschreibung dieses Antwortcodes in RFC 2616 (Hypertext Transfer Protocol - - HTTP / 1.1) , wo es heißt:

  

Wenn der Kunde ein User-Agent ist, sollte es nicht seine Dokumentenansicht von dem ändern   die verursacht die Anforderung gesendet werden. Diese Antwort ist in erster Linie zu ermöglichen,   Eingang für Aktionen eine Änderung des aktiven Benutzer-Agenten zu, ohne dass   Dokument anzeigen, obwohl jede neue oder aktualisierte Metainformationen die angewendet werden sollte   dokumentieren derzeit in der aktiven Ansicht des User-Agent.

Andere Tipps

Dies ist ein Verfahren in der Regel genannt AJAX . Es erfordert Javascript und die XMLHttpRequest Funktion.

Edit: Bemerkt Ihr 'PS' am unteren Rand. Die 204 Antwort in einer anderen Antwort vorgeschlagen sieht aus wie es ein gültiges sein könnte nicht-Javascript-Lösung.

Angenommen, Sie das tun.

Was ist der Benutzer tun? Senden Sie das Formular wieder, natürlich.

Mehrere Male.

Dann werden sie sich entscheiden, Ihre Website ist gebrochen, und verlassen.

Ich denke, dass Sie müssen Javascript aktivieren, das zu tun, können Sie die Anfrage senden können und je nach Server-Antwort der Javascript falsch eine Rückkehr zu tun, die Refresh / Reload der aktuellen Seite zu vermeiden.

Ich weiß nicht, über die 204-Antwort, aber vielleicht auf diese Weise können Sie es von der Server-Seite tun.

Ein andere Möglichkeit, es zu tun (auch Javascript) ist eine Rückkehr falsch zu machen, direkt nach der Anfrage senden ist, und je nach Antwort des Servers (mit Ajax) können Sie die aktuelle Seite ändern oder den Benutzer zu einer anderen Seite senden.

Nein. Das HTTP-Protokoll besteht aus einem Anfrage-Antwort-Zyklus. Der Server kann nicht entscheiden, nicht zu antworten (Es kann, aber dann ist es das Protokoll zu brechen und commiting einen Fehler).

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