Ir para conteúdo

POWERED BY:

Arquivado

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

jnejunior

enviar informações da página atual carregada na mesma página

Recommended Posts

o título é meio complicado, né? mas vou explicar....

 

estou usando ajax para não precisar carregar a página toda a cada link clicado, apenas o conteúdo...

 

e um destes conteudos que é carregado é a página de contato, que por sua vez é validado com PHP, meu problema é que quando envio o formulário, mesmo que não preencha nenhum campo ele vai para a página principal do site (index.php)... gostaria de saber se tem como ao submeter o formulário, e ele não estiver válido, tem como mostrar na mesma página do formulário atual, sem carregar novamente?

 

menu ajax esta assim:

 

$(function(){
$("#carregando").hide();

$("ul#nav a, .contato, .formContato").click(function(){
	pagina = "arquivos/"+$(this).attr('href')

	$("#carregando").ajaxStart(function(){
		$(this).show()
	})

	$("#carregando").ajaxStop(function(){
		$(this).hide();
	})

	$("#texto-conteudo").load(pagina);
	return false;
})
})

Compartilhar este post


Link para o post
Compartilhar em outros sites

envie o formulário com ajax tb.

 

dispare uma requisição no evento onsubmit do objeto formulario.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Dexo ver se entendi.. Se as info estiverem incorretas você quer impedir que o formualario seja redirecionado?

Teria como você postar o código do formulario? Acredito que o return false; que deveria fazer isso. Eu faço assim.. <form onSubmit="return function()">

 

Você ja deve ter considerado.. Alert() '-'?

Compartilhar este post


Link para o post
Compartilhar em outros sites

sem querer ser chato, como faço isso, não manjo muito de JS...?

 

Tribb, se o formulário estiver incorreto, quero exibir mensagens avisando o usuário qual ou quais campos não foram preenchidos, caso contrário quero mostrar mensagem de sucesso, tudo isso na mesma página do formulário..

 

meu code é esse:

 

<?php 	if(isset($_POST['formEnviar'])){ 		if(empty($_POST['formNome'])){ 			echo 'preencha o nome!'; 		} 	} ?>  <form method="post" action=""> 	<fieldset> 		<legend>informe seus dados</legend> 		<span> 			<label for="nome">nome</label> 			<input type="text" name="formNome" /> 		</span> 		<span> 			<label for="email">email</label> 			<input type="text" name="formEmail" /> 		</span> 		<span> 			<label for="assunto">assunto</label> 			<input type="text" name="formAssunto" /> 		</span> 		<span class="msn"> 			<label for="mensagem">mensagem</label> 			<textarea name="formMensagem"></textarea> 		</span> 		<button name="formEnviar" class="formContato">enviar</button> 	</fieldset> </form>

 

eu só fiz para testar o primeiro campo (nome)... mas como não funcionou nem terminei a validação ainda...

Compartilhar este post


Link para o post
Compartilhar em outros sites

já que você tá usando jQuery, use essa function aqui:

http://api.jquery.com/jQuery.ajax/

 

para saber se 'está certo ou errado', apenas confira o POST com o php.

oque você 'der echo' no script php, é oque você vai receber de volta no response da requisição.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ta meio dificil de ler..

Mas você deve fazer 2 checagens uma client-side(js) outra server-side(php)..

 

Dar um exemplo:

 

<form name="seu_form" method="POST" action="index.php" onSubmit="return formcheck()" >
<input type="text" name="login" />
<input type="submit" />
</form>

<script>
d = document.seu_form;
if (d.login.value == ""){
        alert("Por favor, preencha o campo de \"Login\"!");
        d.login.focus();
        return false;
}
</script>

 

Ficaria assim a parte js. A parte php creio que você sabe.

É isso que você quer fazer?

Compartilhar este post


Link para o post
Compartilhar em outros sites

creio que sim, vou testar aqui, depois te falo se deu certo, quanto ao PHP, não sou nenhum mestre jedi mas mando bem, modestia parte...

 

obrigado por enquanto...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tribb, o script JS que você me passou funcionou certinho, só que se eu quiser validar em PHP como faço? não digo a parte do PHP em si, mas para caso haja alguma ausencia de dados, o formulário não ser enviado e a mensagem mostrada na tela... o script que você criou funciona, mas para JS, e só para avisar, faltou criar a função que você chama no onsubmit do formulário...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você quer validar formulario antes de passar para pagina php? (Sem refresh)

Exemplo no meu Login:

Você nao quer q ele apenas valide se o campo está preenchido, mas tambem se o login ja existe e retornar a mensagem login ja existente?

 

Se for isso, procure por algum tutorial de formulario em ajax.

Recomendo este tutorial: http://faael.net/validacao-de-campos-sem-refresh-com-ajax/

Compartilhar este post


Link para o post
Compartilhar em outros sites

vou explicar novamente...

 

estou usando ajax para ão precisar carregar as páginas novamente quando o usuario clicar em algum link...

 

e tenho um link contato, que tem um formulário de contato lógico...

 

quero que ao usuário submeter (enviar) o formulário, e se o mesmo não estiver devidamente quero mostrar com PHP qual campo esta incorreto.. e assim, não enviar o formulário ainda, somente quando o mesmo estiver correto, sacou?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Então o

return false;

impede do formulario ser enviado.. E com ajax você pode exibir em ''php'' a mensagem que quiser.

Você poderia postar seu html? Ele esta enviado com formulario do mesmo jeito? Mesmo o js dando return false;?

Você nao tem hospedado esta pagina em algum lugar para eu entender melhor o que está acontencendo.

Compartilhar este post


Link para o post
Compartilhar em outros sites

este é meu contato.php

 

<?php 	if(isset($_GET['formEnviar'])){ 		 		$nome = $_GET['formNome']; 		$email = $_GET['formEmail']; 		$assunto = $_GET['formAssunto']; 		$msn = $_GET['formMensagem']; 		 		if (empty($nome)){ 			$alerta = 'Por favor, preencha o campo nome!'; 		} elseif (!filter_var($email, FILTER_VALIDATE_EMAIL)){ 			$alerta = 'Por favor, informe um emmail válido! <br /> ex: contato@juniore.com'; 		} elseif (empty($assunto)){ 			$alerta = 'Por favor, preencha o campo assunto!'; 		} elseif (empty($msn)){ 			$alerta = 'Por favor, digite sua mensagem!'; 		} else { 			$alerta = 'Seus dados foram enviados com sucesso!'; 		} 	} 	 	if (isset($alerta)){ 		echo $alerta; 	} 	 ?> <form method="get" action="" name="formContato"> 	<fieldset> 		<legend>informe seus dados</legend> 		<span> 			<label for="nome" id="formNome" onblur="validarDados('formNome', document.getElementById('formNome').value);">nome</label> 			<input type="text" name="formNome" /> 		</span> 		<span> 			<label for="email">email</label> 			<input type="text" name="formEmail" /> 		</span> 		<span> 			<label for="assunto">assunto</label> 			<input type="text" name="formAssunto" /> 		</span> 		<span class="msn"> 			<label for="mensagem">mensagem</label> 			<textarea name="formMensagem"></textarea> 		</span> 		<button name="formEnviar" class="formContato">enviar</button> 	</fieldset> </form>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Então cara, le aquele tutorial q eu te mandei ele faz exatamente o que você quer. Examente.

 

Você nao pode fazer o script php desse jeito.. Você tem q coloca-lo em uma pagina separada, ai você vai montar um código em js que vai enviar os dados via link para o código php. È mais facil você ler o tutorial que você vai entender. rsrs

Qualquer coisa me manda um email. Que eu te ajudo.

Compartilhar este post


Link para o post
Compartilhar em outros sites

eu tava testando agora aqui, mas, se preencho apenas um campo e clico em enviar ele parece que envia na boa, e também não consegui colocar uma mensagem de sucesso caso seja o caso...

 

qual o teu email Tribb?

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.