Prześlij formularz HTML na własnej stronie


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 .


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ę.


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>

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.


-1

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

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.