Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Leandro Fajan

Envio de formulário não funciona

Recommended Posts

Olá pessoal, estou com um problemão e não sei mais o que fazer, cabeça travou aqui.

 

Vou tentar ser bem direto para facilitar:

 

Eu tenho uma página que quando um usuário acessa eu quero saber a data, hora, navegador, etc.

 

Eu já fiz códigos em PHP para obter todas as informações e funciona normalmente, eu utilizo inclusive em forms de contato em meu site, mas eu preciso das informações dessa página que não é um form de contato, ou seja, quando alguém acessar a página o form será preenchido AUTOMATICAMENTE (já fiz e testei) mas também precisa dar o Submit automaticamente (aí mora o problema).

 

Eu fiz o seguinte código:

 

HEAD

 

...

 

<script language="JavaScript">

 

function enviarForm(){
document.getElementById("form1Teste").submit();
}
</script>
</head>
BODY
<body>
<form id="form1Teste" name="form1Teste" method="post" action="<?php echo $editFormAction; ?>">
<input name="dia" id="dia" type="hidden" class="editorInput" value="<? echo $dia;?>" />
<input name="mes" id="mes" type="hidden" class="editorInput" value="<? echo $mes;?>" />
<input name="ano" id="ano" type="hidden" class="editorInput" value="<? echo $ano;?>" />
<input name="navegador" id="navegador" type="hidden" class="editorInput" value="<? echo $browser;?>" />
<input type="submit" name="submit" id="submit" value="Enviar" />
<input type="hidden" name="MM_insert" value="form1Teste" />
</form>
<a href="javascript:enviarForm();">Clique aqui >></a>
</body>
--
Notem que eu coloquei tanto o botão SUBMIT do formulário como também um link que chama a função em javascript, ocorre que se eu clicar no botão SUBMIT o formulário funciona perfeitamente e envia as informações para meu banco de dados, já clicando no link que chama a função javascript o formulário não é enviado, não acontece nada, a página fica imóvel.
Apenas para agilizar também, eu tentei algumas variações no cógido e nenhuma deu certo:
NO LINK PARA CHAMAR FUNÇÃO
Tentei com e também sem o ";" (pode parecer burrice mas chegou um ponto que entrei em desespero e fiz de tudo).
NO CODIGO DE ENVIO DO FORM
Tentei os seguintes códigos:
document.getElementById("form1Teste").submit();
document.getElementById(form1Teste).submit();
document.form1Teste.submit();
document.getElementById("submit").click();
De qualquer forma que eu tento o erro é sempre o mesmo... eu clico no link e nada acontece, a tela permanece imóvel (ao enviar o formulário o usuário seria redirecionado para o site principal, a ideia era tudo isso acontecer sem que ele perceba e de forma rápida, por isso achei melhor fazer assim).
Para ficar ainda mais claro e mais fácil de dar sugestões (mesmo que outros métodos) o que eu estou fazendo é o seguinte:
Ao entrar em www.MeuSite.com.br a página index.php não teria nenhum conteúdo, somente o formulário que iria colher as informações citadas e enviar para meu servidor, depois de dar o submit no formulário o usuário seria redirecionado para a página inicial.php (que seria a página com o conteúdo).
Dessa forma eu teria como ter esse controle de acessos, dia, hora, navegador, etc, de todos que entrarem no site de forma eficaz e simples, mas para isso o formulário precisa ser enviado automaticamente.
Pensei em usar algo do tipo "onmousemove" mas isso seria péssimo pois a tela ficaria congelada até que o usuário achasse estranho e mexesse o mouse aí sim poderia funcionar, mas nos casos de celulares e tablets pode dar erro, então nem tentei.
Enfim, se alguém tiver alguma ideia do porque o código em javascript não funciona seria muito útil, muito obrigado à todos, grande abraço!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Para enviar automático, tente chamar a função no ONLoad do body.

 

Na sua função JS adicione o this

<script language="JavaScript">

function enviarForm(this){

document.getElementById("form1Teste").submit();
}


</script>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá Alaerte,

 

Primeiramente muito obrigado por responder, quanto ao envio automático na verdade eu já sabia mas não coloquei no script da pergunta para não gerar dúvida achando que o problema estava no código de envio automático (na verdade o problema mesmo está para enviar o formulário por javascript, seja automático ou através do link como coloquei).

 

Seguindo sua orientação de colocar o this, eu fiz isso e continuou com o mesmo erro, meu código agora está assim:

 

HEAD

 

...

 

<script language="JavaScript">

function enviarForm(this){
document.getElementById("form1Teste").submit();
}
</script>
</head>
<body>
<form id="form1Teste" name="form1Teste" method="post" action="<?php echo $editFormAction; ?>">
<input name="hora" id="hora" type="text" class="editorInput" value="<? echo $hora;?>:<? echo $minuto; ?>" />
<input name="dia" id="dia" type="text" class="editorInput" value="<? echo $dia;?>" />
<input name="mes" id="mes" type="text" class="editorInput" value="<? echo $mes;?>" />
<input name="ano" id="ano" type="text" class="editorInput" value="<? echo $ano;?>" />
<input name="navegador" id="navegador" type="text" class="editorInput" value="<? echo $browser;?>" />
<input type="submit" name="submit" id="submit" value="Enviar" />
<input type="hidden" name="MM_insert" value="form1Teste" />
</form>
<a href="javascript:enviarForm(this);">Clique aqui >></a>
</body>
--
Continua na mesma, clico no link para executar a função mas nada acontece, o formulário não é enviado.
Não sei se é permitido colocar o link de meu site aqui no forum para você ver na prática mas não consigo entender, é algo extremamente simples, aparentemente funciona com todos mas não está funcionando aqui não faço ideia do porquê.
Se tiver outra sugestão aguardo retorno, muito obrigado.

 

 

 

Para enviar automático, tente chamar a função no ONLoad do body.

 

Na sua função JS adicione o this

<script language="JavaScript">

function enviarForm(this){

document.getElementById("form1Teste").submit();
}


</script>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Problema resolvido!

 

Sem querer entendi qual era o erro (na verdade nunca imaginaria que isso teria influência mas como estava desesperado testei de tudo e acabou dando certo), veja abaixo:

 

 

No formulário o código estava assim:

 

<form id="form1Teste" name="form1Teste" method="post" action="<?php echo $editFormAction; ?>">

 

 

O problema é que ele começava informando o ID já, então pensei em mudar a ordem ficando assim:

 

<form action="<? echo $editFormAction;?>" method="post" name="form1Teste" id="form1Teste" >

 

 

Por incrível que pareça só fazendo essa troca na ordem funcionou normalmente, aí foi só colocar para executar automaticamente como você já havia comentado inclusive e ficou show.

 

Muito obrigado pela atenção meu amigo, e espero que outros possam evitar dores de cabeça agora.

 

Grande abraço!

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.