Ir para conteúdo

POWERED BY:

Arquivado

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

douglasdepaula

[Resolvido] Problema com POST no ajax

Recommended Posts

nao to conseguindo enviar dados no ajax pelo metodo POST so pelo GET.

ai vai o codigo

 

Cadastro.html


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1257" />
	<title>Login</title>
<style>	
<!--
 html, body {
	margin:0;
	padding:0;
}	

fieldset {
	width:260px;
	margin:0 auto;
	padding:30px;
}

.texto {
	width:250px;
	border:1px solid gray;
}

.erro {
	width:250px;
	border:1px solid red;
}

.alerta2 {
	border:1px solid gray;
}
-->
</style>
<script src="ajax.js" type="text/javascript"></script>
<script src="funcoes.js" type="text/javascript"></script>
</head>

<body>
<fieldset>
	<legend>Usuario</legend>
		<form id="form1" name="form1" method="post" action="login.php">
			<div id="alerta"></div>
			<label>Login</label><br />
			<input name="login" id="login" type="text" maxlength="30" class="texto" onblur="javascript: envia('receber.php', 'POST', false);" /><br />
			<labeL>Senha</labeL><br />
			<input name="senha" id="senha" type="password" maxlength="30" class="texto" /><br />
		  <input name="botao" type="submit" value="Enviar" />

	</form>
</fieldset>
</body>
</html>

 

 

Ajax.Js


function ajax() {
};
ajax.prototype.iniciar = function() {

	try{
		this.xmlhttp = new XMLHttpRequest();
	}catch(ee){
		try{
			this.xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
		}catch(e){
			try{
				this.xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
			}catch(E){
				this.xmlhttp = false;
			}
		}
	}
	return true;
}

ajax.prototype.ocupado = function() {
	estadoAtual = this.xmlhttp.readyState;
	return (estadoAtual && (estadoAtual < 4));
}

ajax.prototype.processa = function() {
	if (this.xmlhttp.readyState == 4 && this.xmlhttp.status == 200) {
		return true;
	}
}

ajax.prototype.enviar = function(url, metodo, modo) {
	if (!this.xmlhttp) {
		this.iniciar();
	}
	if (!this.ocupado()) {
		if(metodo == "GET") {
			this.xmlhttp.open("GET", url, modo);
			this.xmlhttp.send(null);
		} else {		
			this.xmlhttp.open("POST", url, modo);
			this.xmlhttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8");
			this.xmlhttp.setRequestHeader("Cache-Control", "no-store, no-cache, must-revalidate");
			this.xmlhttp.setRequestHeader("Cache-Control", "post-check=0, pre-check=0");
			this.xmlhttp.setRequestHeader("Pragma", "no-cache");
			this.xmlhttp.send(url);
		}	

		if (this.processa) {
			return unescape(this.xmlhttp.responseText.replace(/\+/g," "));
		}
	}
	return false;
}

 

 

Funcoes.js


function envia(url, metodo, modo)
{
	var login = document.getElementById('form1').login.value;
	remoto  = new ajax();
	xmlhttp = remoto.enviar(url + "?login=" + login, metodo, modo );
	if(xmlhttp) {
		document.getElementById('login').className = 'erro';
		document.getElementById('alerta').className = 'alerta2';
		document.getElementById("alerta").innerHTML = 'Esse usuario ja esta cadastrado';
	} else {
		document.getElementById('login').className = 'texto';
		document.getElementById('alerta').className = '';
		document.getElementById("alerta").innerHTML = '';
	}	
}

 

 

Receber.php


<?php
$texto = $_POST["login"];

if($texto == "Fulano") {
        echo true;
} else {
        echo false;
}       
?>

do jeito q ta ai ta funcionando beleza, se digitar Fulano no input login vai aparece uma msg na pagina dizendo q Esse usuario ja esta cadastrado mais eu preciso passar os dados pra pagina receber.php por metodo POST e nao to conseguindo aki alguem ajuda

Compartilhar este post


Link para o post
Compartilhar em outros sites

Mas cara.

você ta digitando e quando você sai do foco ele executa as funções e retorna que o usuário já está cadastrado não é ?

 

Nao está cadastrado mesmo ? Ja tentou digitar outra coisa ?

 

Detalhes:

no receber.php, nao use $_REQUEST, ou $_POST use $_GET... Pq você ta passando LOGIN por parametro =)

$texto = $_GET["login"];

Compartilhar este post


Link para o post
Compartilhar em outros sites

No lugar de UrL no metodo POST deve ir somente as variaveis:

this.xmlhttp.open("POST", 'http://site.com/pagina.php', modo);
this.xmlhttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8");
this.xmlhttp.setRequestHeader("Cache-Control", "no-store, no-cache, must-revalidate");
this.xmlhttp.setRequestHeader("Cache-Control", "post-check=0, pre-check=0");
this.xmlhttp.setRequestHeader("Pragma", "no-cache");
this.xmlhttp.send('teste=nada&teste2=beta&teste3=ok');

leia:

http://www.learn-ajax-tutorial.com/

 

Abraço e boa sorte, Atenciosamente Silverfox

Compartilhar este post


Link para o post
Compartilhar em outros sites

this.xmlhttp.send('login=Fulano);
Como fasso para q ai no login=Fulano ele pege o valor do input login, pq do jeito q ta ai qualquer coisa q eu digita no imput vai enviar login=Fulano

--' mals eu nun sei nada de ajax da uma ajudinha :D

Compartilhar este post


Link para o post
Compartilhar em outros sites

Use getElementsByTagName() para pegar todos os campos <input>, seria a melhor maneira ;)

você teria que criar uma condição para o POST e uma para o GET

 

no GET ele adicionaria o ?campo=valor a url e no post ele mandaria ?campo=valor para o .send();

 

Vou ver se consigo fazer um exemplo para você aqui, vai demorar um pouco porque to no trabalho ;)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Amigo estou meio sem tempo de fazer um exemplo então peguei uns links na NET:

http://www.javascriptkit.com/dhtmltutors/ajaxgetpost.shtml

http://www.phpbuilder.com/columns/jon_campbell20070730.php3 (esse é melhorzinho)

 

Não achei nenhum que "eu" considere "descente", mas ainda sim são uteis para entender ;)

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.