Отправить HTML-форму на собственной странице

103

Я хочу, чтобы HTML-форма отправлялась сама себе. Как использовать actionатрибут?

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

Что было предпочтительнее?

Ото Шавадзе
источник
1
Надеюсь, вы видели этот пост stackoverflow.com/questions/1131781/…
Tariqulazam
Какой у вашего документа <doctype> ?? Это поможет вам ответить.
Милче Патерн
просто не использовать атрибут действия
Милче Патерн

Ответы:

124

В 2013 году со всем HTML5 вы можете просто опустить атрибут action, чтобы самостоятельно отправить форму.

<form>

Фактически, подраздел «Отправка формы» текущего черновика HTML5 не допускает action = "" (пустой атрибут). Это противоречит спецификации.

Из этого другого ответа на переполнение стека .

Милче Патерн
источник
1
Я использовал <? Php $ _PHP_SELF?> И получил сообщение об ошибке, что действие не может быть пустым, я думаю, я просто оставлю его выключенным
Дрюдин
2
Я запутался. Допустимо ли w3 полностью исключить actionатрибут, но не оставить его пустым?
мистер Мартин
Кому мне тогда нужно получить доступ к параметрам с помощью $ _GET или $ _POST?
Блэк
22

Использование ?:

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

Он отправит пользователя обратно на ту же страницу.

Le Codeur
источник
Это круто!
beppe9000
3
Не так уж и круто. Это приведет к удалению всех строк запроса текущего URL-адреса, если они есть.
OMA
1
Я хочу удалить строки запроса: 3
VoidZA
21

Вы можете оставить атрибут действия пустым. Форма автоматически отправится на той же странице.

<form action="">

Согласно спецификации w3c , атрибут действия должен быть непустым действительным URL-адресом. Также есть объяснение некоторых ситуаций, в которых атрибут действия может оставаться пустым.

Действие элемента - это значение атрибута formaction элемента, если элемент является кнопкой «Отправить» и имеет такой атрибут, или значение атрибута действия его владельца формы, если он есть, или пустую строку.

Таким образом, они оба по-прежнему действительны и работают:

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

Если вы уверены, что ваша аудитория использует браузеры html5, вы можете даже опустить атрибут действия:

<form>
муратгозель
источник
Можете ли вы подтвердить, что атрибут «действие» можно оставить пустым и проверить?
Milche Patern
4
Не проверяет. : Недопустимое значение для действия атрибута в форме элемента: не должно быть пустым.
Azd325
2
Согласно спецификации HTML5, пустая строка не разрешена в качестве действия: w3c.github.io/html/sec-forms.html#element-attrdef-form-action
Thomas
1
Это единственное, что у меня работает. <br/> ссылка Атрибуты содержимого action и formaction, если они указаны, должны иметь значение, которое является действительным непустым URL-адресом, потенциально окруженным пробелами ........ если они есть, или пустой строкой.
JoelBondurant
концепция «не проверяет» абсурдна, потому что единственный человек, который может проверить ваш XML, - это вы. В этом суть XML - вы говорите набор правил, которые вы хотите соблюдать для своего XML-документа, кодируете их в DTD и позволяете синтаксическому анализатору XML выполнять обманчиво сложный синтаксический анализ. Это одна из причин, почему XML по-прежнему важен сегодня - вы можете взять любую модель, какую захотите, будь то JSON, текст, csv, написать простой преобразователь из этого формата в XML, написать DTD для этого XML, и бац, вы пропустите необходимость чтобы написать свой собственный валидатор, XML уже сделал это!
Дмитрий
-1

Вы можете сделать это, используя ту же страницу атрибута действия: action='<yourpage>'

DarkAjax
источник