Solucionado (ver solução)
Solucionado
(ver solução)
6
respostas

method="post" na minha tag <a>

Pessoal quis fazer um teste pra saber se eu apenas poderia usar o method="post" na tag form.

Veja o código que eu fiz:

<td>
        <input type="hidden" name="id" value="<?=$produto['id']?>">
      <a href="remove-produto.php?id=<?=$produto['id']?>" class="text-danger" method="post">remover</a>
</td>

Bom, fui lá na aba de network pra ver o que ia acontecer. Ele fez o redirecionamento, ou seja o código 302 aparece, a mensagem de "Produto apagado com sucesso" é exibida, mas ele de fato não apagou o produto do meu banco de dados. No redirecionamento o produto aparece e ao listar ele também tá lá.

A princípio achei que nao ia dar certo (e nao deu rs), mas fiquei mais surpreso por ele fazer um falso redirecionamento. Por que isso aconteceu?

6 respostas

Você checou no CONSOLE do navegador se realmente foi um POST que foi enviado ou um GET ?

Foi um GET

solução!

Então isto significa que o method="post" foi ignorado.

Entendi.

Geovane, boa tarde!

Todas as tags html possuem atributos específicos para cada tag e cada comportamento desejado.

adicionar um atributo que não pertence a tag, faz com que ela simplesmente o ignore e seu comportamento padrão será mantido.

a única utilidade de usar outros atributos que não os padrões, é exclusivamente para aproveitar em javascript.

Por exemplo:

<a href="qualquer-link" id="teste" data-nome="Adriano">Teste</a>

<script>
var obj = document.getElementById("teste");

alert( obj.getAttribute("data-nome") );
</script>

O resultado será um alerta com o valor do atributo.

Como você viu, utilizei um atributo que nem existe, e o comportamento do link não é afetado.

O mesmo ocorre se usar um que existe como o method, mas se o atributo não pertencer ao elemento, nada acontecerá.

Quanto a questão de direcionamento, depende das configurações do seu backend, se o caminho informado no href era esperado ou se a rota apenas aceita métodos do tipo POST.

Valeu Adriano!