Tenho um site de classificados e, na página em que os anúncios são exibidos, estou criando um formulário "Envie uma dica para um amigo" ...
Assim, quem quiser pode enviar uma dica do anúncio para o e-mail de alguns amigos.
Eu estou supondo que o formulário deve ser enviado a uma página php, certo?
<form name='tip' method='post' action='tip.php'>
Tip somebody: <input name="tip_email" type="text" size="30" onfocus="tip_div(1);" onblur="tip_div(2);"/>
<input type="submit" value="Skicka Tips"/>
<input type="hidden" name="ad_id" />
</form>
Ao enviar o formulário, a página é recarregada ... Não quero isso ...
Existe alguma maneira de não recarregar e ainda enviar o e-mail? De preferência sem ajax ou jquery ...
obrigado
php
javascript
html
forms
FruDe
fonte
fonte
<iframe>
e otarget
atributo fará isso.Respostas:
Você precisará enviar uma solicitação ajax para enviar o e-mail sem recarregar a página. Dê uma olhada em http://api.jquery.com/jQuery.ajax/
Seu código deve ser algo como:
O formulário será enviado em segundo plano para a
send_email.php
página que deverá atender à solicitação e enviará o e-mail.fonte
return false;
antes dos últimos colchetesEu descobri o que considero uma maneira mais fácil. Se você colocar um Iframe na página, poderá redirecionar a saída da ação para lá e fazê-la aparecer. Você não pode fazer nada, é claro. Nesse caso, você pode definir a exibição do iframe como nenhum.
fonte
action="about:blank"
$_POST["ad_id"]
Você quer usar AJAX ou você
fonte
<form id="myGiswebForm" method="post" action="https://******/saveForm.asp" target="myiframe">
e<iframe style="display:none;" src="" name="myiframe"></iframe>
A maneira mais rápida e fácil é usar um iframe. Coloque uma moldura na parte inferior da página.
<iframe name="frame"></iframe>
E em sua forma faça isso.
e para tornar o quadro invisível em seu css.
fonte
display:none;
e nãoborder:0px
. Tentei editar, mas minhas edições são rejeitadas pelos revisores que parecem não se importar em olhar o comentário de edição. Modifique sua resposta para corrigir o código.Enviar formulário sem recarregar a página e obter o resultado dos dados enviados na mesma página
Aqui estão alguns dos códigos que encontrei na Internet que resolvem esse problema:
1.) IFRAME
Quando o formulário enviado, a ação será executada e direcionar o iframe específico para recarregar.
index.php
iframe_content.php
2.) AJAX
Index.php:
server_action.php
Tag: phpAjaxjquerylado do servidorhtml
fonte
É necessário ter ajuda
jquery-ajax
neste caso. Semajax
, atualmente não há solução.Primeiro, chame uma função JavaScript quando o formulário for enviado. Basta definir
onsubmit="func()"
. Mesmo se a função for chamada, a ação padrão do envio será executada. Se for executado, não haverá como impedir que a página seja atualizada ou redirecionada. Portanto, a próxima tarefa é evitar a ação padrão. Insira a seguinte linha no início defunc()
.Agora, não haverá redirecionamento ou atualização. Então, você simplesmente faz uma chamada ajax de
func()
e faz o que quiser quando a chamada termina.Exemplo:
Formato:
Javascript:
fonte
É exatamente assim que PODE funcionar sem jQuery e AJAX e está funcionando muito bem usando um iFrame simples. I LOVE IT, funciona em Opera10, FF3 e IE6. Graças a alguns dos pôsteres acima me apontando a direção certa, essa é a única razão pela qual estou postando aqui:
o código php que gera a página que está sendo chamada acima:
fonte
print
para imprimir código HTML. Apenas feche a tag php?>
e adicione o código html depois. E evite usáexit
-lo não é necessário (erros fatais, ...)Isso deve resolver seu problema.
Neste código, após clicar no botão enviar, chamamos jquery ajax e passamos a url para postar
tipo POST / GET
data: data information você pode selecionar campos de entrada ou qualquer outro.
sucesso: retorno de chamada se tudo estiver ok a partir do
texto do parâmetro da função do servidor , html ou json, resposta do servidor
com sucesso você pode escrever avisos se os dados que você obteve estiverem em algum tipo de estado e assim por diante. ou execute seu código o que fazer a seguir.
fonte
Você pode tentar definir o atributo target do seu formulário como um iframe oculto, para que a página que contém o formulário não seja recarregada.
Eu tentei fazer uploads de arquivos (que sabemos que não podem ser feitos via AJAX) e funcionou perfeitamente.
fonte
Você já tentou usar um iFrame? Sem ajax e a página original não carrega.
Você pode exibir o formulário de envio como uma página separada dentro do iframe e, quando for enviado, a página externa / contêiner não será recarregada. Esta solução não fará uso de nenhum tipo de ajax.
fonte
se você estiver enviando para a mesma página onde está o formulário, você pode escrever as tags do formulário sem uma ação e ele enviará, como este
fonte
Fiz algo semelhante ao jquery acima, mas precisava redefinir meus dados de formulário e telas de anexo gráfico. Então, aqui está o que eu criei:
Isso funciona bem para mim, para a sua aplicação de apenas um formulário html, podemos simplificar este código jquery assim:
fonte
Você precisará usar JavaScript sem resultar em uma
iframe
(abordagem feia).Você pode fazer isso em JavaScript; usar jQuery o tornará indolor.
Eu sugiro que você verifique AJAX e Postagem.
fonte
Outra possibilidade é fazer um link javascript direto para a sua função:
...
fonte
A página será recarregada se você não quiser usar javascript
fonte
<iframe name="ew" />
e<form target="ew" />
Tentei várias vezes uma boa solução e a resposta do @taufique ajudou-me a chegar a esta resposta.
NB : Não se esqueça de colocar
event.preventDefault();
no início do corpo da função.fonte
Aqui está um pouco de jQuery para postar em uma página php e obter html de volta:
fonte