Отправить 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">

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


Это круто!
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>'

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.