Enviar formulário HTML na página própria

103

Quero que um formulário HTML seja submetido a si mesmo. Como faço para usar o actionatributo?

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

Qual era preferível?

Oto Shavadze
fonte
1
Espero que você tenha visto este post stackoverflow.com/questions/1131781/…
Tariqulazam
Qual é o <doctype> do seu documento ?? Isso vai te ajudar a responder.
Milche Patern
simplesmente não usa atributo de ação
Milche Patern 26/11/2013

Respostas:

124

Em 2013, com todo o material HTML5, você pode simplesmente omitir o atributo 'action' para auto-enviar um formulário

<form>

Na verdade, a subseção de Envio de Formulário do rascunho HTML5 atual não permite action = "" (atributo vazio). É contra a especificação.

A partir dessa outra resposta Stack Overflow .

Milche Patern
fonte
1
Usei <? Php $ _PHP_SELF?> E recebi o erro de que a ação não pode ficar em branco, acho que vou deixá-la desativada
Drewdin
2
Estou confuso. É w3 válido deixar o actionatributo totalmente fora , mas não deixá-lo vazio?
senhor Martin
Para eu preciso acessar os parâmetros com $ _GET ou $ _POST então?
Preto
21

Você pode deixar o atributo de ação em branco. O formulário se submeterá automaticamente na mesma página.

<form action="">

De acordo com a especificação w3c , o atributo action deve ser uma url válida não vazia em geral. Também há uma explicação para algumas situações em que o atributo de ação pode ser deixado em branco.

A ação de um elemento é o valor do atributo formaction do elemento, se o elemento for um Botão Enviar e tiver tal atributo, ou o valor do atributo action do proprietário do formulário, se tiver um, ou então a string vazia.

Então, ambos ainda são válidos e funcionam:

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

Se tiver certeza de que seu público está usando navegadores html5, você pode até omitir o atributo action:

<form>
Muratgozel
fonte
Você pode confirmar se o atributo 'ação' pode ser deixado em branco e validar?
Milche Patern de
4
Não valida. : Valor inválido para ação de atributo no formulário do elemento: não pode estar vazio.
Azd325 de
2
De acordo com as especificações do HTML5, uma string vazia não é permitida como ação: w3c.github.io/html/sec-forms.html#element-attrdef-form-action
Thomas
1
Esta é a única coisa que funciona para mim. <br/> link Os atributos de conteúdo de ação e formação, se especificados, devem ter um valor que seja um URL não vazio válido potencialmente cercado por espaços ........ se tiver um, ou então a string vazia.
JoelBondurant
o conceito de "não valida" é absurdo porque a única pessoa que pode validar seu XML é você. Esse é o ponto do XML - você diz um monte de regras que deseja manter verdadeiras para o seu documento XML, codifica-as em DTD e faz com que o analisador XML execute uma análise aparentemente difícil. Esta é uma das razões pelas quais XML ainda é importante hoje - você pode pegar qualquer modelo que quiser, seja JSON, texto, csv, escrever um transformador simples desse formato para XML, escrever um DTD para esse XML e bam, pule a necessidade para escrever seu próprio validador, XML já fez isso!
Dmitry
21

Use ?:

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

Isso enviará o usuário de volta à mesma página.

Le Codeur
fonte
Isso é incrível!
beppe9000 de
3
Não é tão incrível. Isso removeria todas as strings de consulta do URL atual, se houver.
OMA
1
Quero remover as strings de consulta: 3
VoidZA
12

Se você estiver enviando um formulário usando php, certifique-se de usar:

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

para segurança.

Buts
fonte
-1

Você pode fazer isso usando a mesma página no atributo action: action='<yourpage>'

DarkAjax
fonte