Ir para conteúdo

POWERED BY:

Arquivado

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

Dee

[Resolvido] PHP + Ajax

Recommended Posts

Galera.

Tenho uma página que tem uma DIV no meio, no qual todas os Links que eu clico, são redirecionados para essa DIV via AJAX.

Mas tem uma página que possui um Formulário.

E quando eu sou o Submit, a página não reconhece a ação que eu coloquei para receber os dados e fazer o Inser no Banco de Dados.

E carrega a página principal como se nada estivesse acontecido.

 

Código abaixo, porém, que não vai adiantar muita coisa, é a página de cadastro.

<?php header("Content-Type: text/html;  charset=ISO-8859-1",true) ?>
<?php

/*
	Página de Cadastros de Usuários	
*/
if($_SERVER['REQUEST_METHOD'] == "GET")
{
	$login = $_POST["login"];
	$senha = $_POST["senha"];
	$nivel = $_POST["nivel"];

	mssql_connect("xxx","xxx","xxx");
	mssql_select_db("xxx");

	$query = "select login from adm_usuarios where login = '$login'";
	$exe = mssql_query($query);
	$lin = mssql_num_rows($exe);
	$msg = "";

	if($lin > 0)
	{
		$msg = "Já Existe um Usuário Com Esse Login";
	}
	else
	{
		$sql = "insert into adm_usuarios values ('$login', '$senha', GetDate(), '$nivel')";
		$exe = mssql_query($sql);
		$msg = "Cadastro Realizado com Sucesso!";
	}
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<link rel="stylesheet" href="../css/formulario.css" type="text/css" />
<script type="text/javascript" src="../js/funcoes.js" language="javascript"></script>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Cadastro de Usuários</title>
</head>

<body>
<form method="post" action="" name="form" id="form" onsubmit="return validar_campos()">
<div align="center" id="erro">
	<?php

		if($_SERVER['REQUEST_METHOD'] == "POST")
		{
			echo $msg;
		}
	?>
</div>
<table border="0" cellpadding="2" cellspacing="2" width="45%" align="center" class="borda">
	<tr>
		<td class="header" height="30" colspan="2">
			Cadastro de Usuários
		</td>
	</tr>
	<tr>
		<td width="45%" class="text">Login: </td>
		<td width="55%"><input type="text" name="login" id="name" size="25" width="200" maxlength="15" class="campo" /></td>
	</tr>
	<tr>
		<td class="text">Senha: </td>
		<td><input type="password" name="senha" id="senha" size="25" width="200" maxlength="16" class="campo" /></td>
	</tr>
	<tr>
		<td class="text">Confirmar Senha: </td>
		<td>
			<input type="password" name="confirmar_senha" id="confirmar_senha" size="25" width="200" maxlength="16" class="campo" onblur="return conf_senha()" />
		</td>
	</tr>
	<tr>
		<td class="text">Nível de Usuário: </td>
		<td class="text">
			<input type="radio" name="nivel" id="nivel" value="adm" />
				Administrador
			<input type="radio" name="nivel" id="nivel" value="user" />
				Usuário
		</td>
	</tr>
	<tr>
		<td colspan="2" align="center">
			<input type="submit" value="Cadastrar" name="enviar" id="enviar" class="botao" />
			<input type="reset" value="Limpar" name="limpar" id="limpar" class="botao" />
		</td>
	</tr>
</table>
</form>
</body>
</html>

 

O Link para abrir dentro da Div é o seguinte:

<a href="#" onClick="abrirPag('pagina.php')"> Link </a>

Não há nenhuma forma de colocar isso no action do FORM ? Ou um evento que faça isso ?

 

Alguém pode me ajudar ?

 

Obrigado!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você não entendeu a questão.

A questão é que a ação de cadastrar não está funcionando.

Porque essa página de cadastro é dentro de uma Div carregada por AJAX.

E quando eu digito os dados e mando, a página não chama a ação no IF Request_Method, por ter outra página "Por cima".

Não tem nada a ver com validação de campos.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você não entendeu a questão.

A questão é que a ação de cadastrar não está funcionando.

Porque essa página de cadastro é dentro de uma Div carregada por AJAX.

E quando eu digito os dados e mando, a página não chama a ação no IF Request_Method, por ter outra página "Por cima".

Não tem nada a ver com validação de campos.

 

Bom, deixa ver se eu consegui entender dessa vez, essa pagina que você colocou acima, é carregada dentro de uma div certo? uma div central de conteudo ou algo do tipo, mas quando isso ocorre, o primeiro php não funciona, é isso?

 

Bom, eu faria da seguinte forma, neste arquivo só colocaria o que está dentro do body, até pq ele ja vai cair em uma div dentro de uma pagina com essas tags todas (<html>, <title> e etc...), outra coisa, lá no ajax.open você ta usando o metodo get?

Talvez possa ser o js de validar o formulario, ja tive problemas com isso, as vezes não conseguia pegar os valores dos campos, divs ou o que fosse pelo id, nessas paginas carregadas dentro de divs, nesses casos passei a fazer um for para pegar os valores dos campos, e em outros casos pegar os valores com childNodes.

 

Espero ter ajudado em algo, e espero ter conseguido entender desta vez aheuaehueu.

 

(antes de terminar lembrei que tive um problema exatamente igual a esse, e resolvi fazendo o que te falei no outro post, mas tira o onsubmit do form e coloca o action="javascript:validar_campos()")

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu achei um Script aki no Imaster.

Que manda os dados por GET pra página(no meu caso a mesma).

Dae eu recebo elas por $_GET e no por $_POST. E depois faço tudo normalmente. =)

 

enviaForm.js

// JavaScript Document
// cria a fila
fila=[];
ifila=0;

// funcao que carrega uma pagina dentro de um objeto qualquer
function carrega(url, destino){
        // coloca o texto "carregando" no objeto de carregamento
        document.getElementById(destino).innerHTML="Carregando";

        // adiciona o item na fila
        fila[fila.length]=[url,destino];
        
        // se a fila estiver vazia, inicia a execução
        if((ifila+1)==fila.length)ajaxRun();
}

//Executa a próxima conexão da fila
function ajaxRun(){
        // carrega os dados da pagina da fila
        url             = fila[ifila][0];
        destino = fila[ifila][1];
                
        // carrega a pagina
        xmlRequest.open("GET", url, true);
        
        // headers
        xmlRequest.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8");
        xmlRequest.setRequestHeader("Cache-Control", "no-store, no-cache, must-revalidate");
        xmlRequest.setRequestHeader("Cache-Control", "post-check=0, pre-check=0");
        xmlRequest.setRequestHeader("Pragma", "no-cache");

        // ao completar o carregamento
        xmlRequest.onreadystatechange=function() {
                if (xmlRequest.readyState==4){
                        // coloca o valor no objeto requisitado
                        texto=unescape(xmlRequest.responseText.replace(/\+/g," "));
                        document.getElementById(destino).innerHTML=texto;

                        // executa a proxima requisição da lista (se existir)
                        ifila++;
                        if(ifila<fila.length)setTimeout("ajaxRun()",20);
                }
        }
        
        // executa
        xmlRequest.send(url);
}

// função que le todos os campos de um form e envia!
function enviaForm(frmNome, url, destino){
		var login = document.getElementById("login");
		var senha = document.getElementById("senha");
		var confirmar_senha = document.getElementById("confirmar_senha");
		var faltam = "Atenção!\nOs Campos Abaixo São de Preenchimento Obrigatório\n\n";
		var status = 0;
		
		if(login.value == ""){
			faltam = faltam + "Login\n";
			status = 1;
		}
		if(senha.value == ""){
			faltam = faltam + "Senha\n";
			status = 1;
		}
		if(confirmar_senha.value == ""){
			faltam = faltam + "Confirmar Senha";
			status = 1;
		}
	
		if(status == 1){
			alert(faltam);
			return(false);
		}	
		else{
			// Captura o form
			f = document.getElementById(frmNome);
			// inicializa nova URL
			var query=url;
			//Percorre elementos do formulario
			for (i=0;i<f.elements.length;i++){
					// se for a primeira variavel adiciona o "?" senao adiciona "&"
					query += i==0 ? '?' : '&';
					// concatena a variavel na query
					query += f.elements[i].name + '=' + f.elements[i].value;
			}
			// envia o formulario
			carrega(query, destino);
		}
}

E no botao que envia assim:

<input type='button' onclick='enviaForm("nome_do_form","pagina.php","nome_da_div");;

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.