2010-07-19 24 views
5

Gibt es eine Möglichkeit, ein Formular entweder durch Typ oder Aktion URL anzugeben, um die Antwort nicht zu öffnen? Mit anderen Worten möchte ich die Informationen an den Server senden, aber nichts auf dem Client tun. Ich weiß, dass ich Ajax verwenden kann und die Antwort ignorieren kann, aber ich möchte vermeiden, alle js meinem Code hinzuzufügen, wenn möglich.Gibt es eine Möglichkeit, Formularantwort zu ignorieren?

Edit: Ich wollte mich nicht auf das HTML-Formular beschränken. In meinem Fall waren serverseitige Lösungen ebenfalls akzeptabel.

Antwort

8

haben die Server Rückkehr HTTP 204 (kein Inhalt), nachdem die Formularübermittlung Nach the HTTP 1.1 spec:

10.2.5 204 No Content

Der Server die Anforderung erfüllt hat aber keinen gesonderten einheits Körper zurückzukehren, und vielleicht aktualisiert Metainformationen zurückkehren möchten. Die Antwort Mai neue oder aktualisierte Metainformation in Form von Entity-Header enthalten, die, wenn vorhanden sollte mit der angeforderten Variante zugeordnet werden.

Wenn der Kunde ein User-Agent ist, es seine, sollten Sie nicht Dokumentansicht aus, dass ändern, die die Anforderung an gesendet werden, verursacht. Diese Antwort ist in erster Linie soll Eingang statt für Aktionen ermöglichen, ohne eine Änderung an der User-Agent des aktiven Dokumentansicht verursacht, obwohl jede neue oder aktualisierte Metainformationen SOLL angewendet werden aktiv das Dokument derzeit in der Benutzer Agenten Aussicht.

Die 204 Antwort enthalten darf keinen Nachrichten Körper und ist somit immer durch die ersten leeren Zeilen Felder nach dem Header beendet.

Das klingt genau, was Sie wollen.

+0

Perfekt, danke! – Adam

0

Mit ASP.NET könnten Sie eine Seite haben, die den Formular-Post verarbeitet und einfach die Antwort sofort beendet, damit der Benutzer auf der gleichen Seite bleibt.

jedoch keine Reaktion auf den Benutzer überhaupt nicht die beste Benutzererfahrung .....

+0

Die Benutzererfahrung ist eigentlich der Grund für die Frage. Momentan wird eine Datei zurückgegeben, aber in diesem Fall ist sie leer und wir möchten nicht, dass der Browser mit "Öffnen/Speichern" auffordert. – Adam

4

try this:

<iframe id="invisible" ... 

<form target="invisible" ... 
+1

Nicht sicher, warum es downvoted wurde, das ist eine gute Idee, einfach zu implementieren und funktioniert cross-browser. – Kobi

+0

Dies beantwortet tatsächlich die gestellte Frage. Wenn die Frage lautet: "Gibt es eine Möglichkeit, die Formantwort zu ignorieren?" Lautet die Antwort nicht, die Antwort zu ändern, sondern einen Weg zu finden, die Antwort zu ignorieren. Diese Technik hat unseren Speck gerettet. – Speck

0

Ich fand, dass Namensattribut sollte auch angegeben werden (ich in IE11 getestet). Zum Beispiel:

<iframe id="invisible" name="invisible" style="display:none;"></iframe> 
<form method="post" target="invisible" action="url.com/whatever?x=y" id="fileForm" enctype="multipart/form-data"> 
Verwandte Themen