Prześlij formularz HTML na własnej stronie

103

Chcę, aby formularz HTML przesłał się do siebie. Jak używać actionatrybutu?

  1. <form action="">
  2. <form action="#">
  3. <form action="some/address">
  4. <form>

Co było lepsze?

Oto Shavadze
źródło
1
Mam nadzieję, że widziałeś ten post stackoverflow.com/questions/1131781/…
Tariqulazam
Jaki jest <doctype> Twojego dokumentu? Pomoże ci odpowiedzieć.
Milche Patern
po prostu nie używaj
atrybutu

Odpowiedzi:

124

W 2013 roku, w przypadku wszystkich elementów HTML5, możesz po prostu pominąć atrybut „action”, aby samodzielnie przesłać formularz

<form>

W rzeczywistości podsekcja Przesyłanie formularza w bieżącej wersji roboczej HTML5 nie zezwala na działanie = "" (pusty atrybut). Jest to niezgodne ze specyfikacją.

Z tej innej odpowiedzi Stack Overflow .

Milche Patern
źródło
1
Użyłem <? Php $ _PHP_SELF?> I otrzymałem błąd, że akcja nie może być pusta, myślę, że źle, po prostu zostaw to
Drewdin
2
Jestem zmieszany. Czy w3 prawidłowe jest pozostawienie actionatrybutu razem, ale nie pozostawienie go pustego?
pan martin
Czy muszę wtedy uzyskać dostęp do parametrów za pomocą $ _GET lub $ _POST?
Czarny
22

Zastosowanie ?:

<form action="?" method="post">

Odeśle użytkownika z powrotem na tę samą stronę.

Le Codeur
źródło
To jest niesamowite!
beppe9000
3
Nie tak niesamowite. Spowoduje to usunięcie wszystkich ciągów zapytań z bieżącego adresu URL, jeśli je ma.
OMA
1
Chcę usunąć ciągi zapytania: 3
VoidZA
21

Możesz pozostawić atrybut akcji pusty. Formularz zostanie automatycznie przesłany na tej samej stronie.

<form action="">

Zgodnie ze specyfikacją w3c atrybut działania musi być ogólnie niepusty prawidłowym adresem URL. Istnieje również wyjaśnienie niektórych sytuacji, w których atrybut akcji może pozostać pusty.

Akcją elementu jest wartość atrybutu formaction elementu, jeśli element jest przyciskiem Prześlij i ma taki atrybut, lub wartość atrybutu akcji właściciela formularza, jeśli ma, lub pusty ciąg.

Więc oba nadal są ważne i działają:

<form action="">
<form action="FULL_URL_STRING_OF_CURRENT_PAGE">

Jeśli masz pewność, że Twoi odbiorcy korzystają z przeglądarek HTML5, możesz nawet pominąć atrybut działania:

<form>
muratgozel
źródło
Czy możesz potwierdzić, że atrybut „action” może pozostać pusty i potwierdzić?
Milche Patern
4
Nie sprawdza. : Zła wartość dla działania atrybutu w postaci elementu: nie może być pusta.
Azd325
2
Zgodnie ze specyfikacją HTML5 pusty ciąg nie jest dozwolony jako akcja: w3c.github.io/html/sec-forms.html#element-attrdef-form-action
Thomas
1
To jedyna rzecz, która mi pasuje. <br/> link Atrybuty action i formaction content, jeśli zostały określone, muszą mieć wartość będącą prawidłowym niepustym adresem URL, potencjalnie otoczonym spacjami ........ jeśli taki posiada, lub pustym ciągiem.
JoelBondurant
koncepcja „nie sprawdza poprawności” jest absurdalna, ponieważ jedyną osobą, która może zweryfikować Twój XML jesteś Ty. O to właśnie chodzi w XML-u - mówisz kilka reguł, które chcesz zachować dla swojego dokumentu XML, kodujesz je w DTD i każesz parserowi XML zająć się zwodniczo trudnym parsowaniem. To jeden z powodów, dla których XML jest nadal ważny - możesz wziąć dowolny model, czy to JSON, tekst, csv, napisać prosty transformator z tego formatu do XML, napisać DTD dla tego XML i bam, pomijasz potrzebę aby napisać własny walidator, XML już to zrobił!
Dmitry
12

Jeśli przesyłasz formularz za pomocą php, użyj:

action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>"

dla ochrony.

Ales
źródło
-1

Możesz to zrobić, korzystając z tej samej strony w atrybucie akcji: action='<yourpage>'

DarkAjax
źródło