Ir para conteúdo

Arquivado

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

Wilker

Ajax

Recommended Posts

e ae galera, meu 2 tutorial por aki Imagem Postada

 

bom, vou ensinar aqui como se usar o Ajax em suas aplicacoes web.

pra comeco de historia, o Ajax na verdade, eh um treco do JavaScript, o qual permite puxar dados de arquivos, e permite tambem, enviar dados pra esses arquivos (nossos queridos GET e POST), pra fazer uma cosulta ao arquivo (parece o LoadVars do Flash)

 

quem quizer aprender mesmo isso, alem de conhecimento PHP, eh bom saber um Javascript legal, pois ele é o mais usado nesse caso

 

ao codigo!

 

precisamos primeiro inicializar o Ajax, seria muito facil, se todo mundo usasse o mesmo browser... mas como isso não é real, entao vamos criar uma funcao que retornao Ajax do browser em uso:

 

ajaxInit.js

function ajaxInit() {	var req;		try {  req = new ActiveXObject("Microsoft.XMLHTTP");	} catch(e) {  try { 	 req = new ActiveXObject("Msxml2.XMLHTTP");  } catch(ex) { 	 try {    req = new XMLHttpRequest(); 	 } catch(exc) {    alert("Esse browser não tem recursos para uso do Ajax");    req = null; 	 }  }	}		return req;}
oque esse script faz é ir tentando carregar o Ajax até conseguir, usando try / catch

 

agora ja temos a funcao de inicializacao (oia q legal!)

 

agora vamos criar um script PHP para ser usado nesse exemplo

obs: esse script poderia ser feito apenas em javascript, mas a intencao é apenas demonstrar o uso do Ajax

 

scriptAjax.php

 

PHP

 

 

 

 

[*]<?php

[*]$gmtDate = gmdate("D, d M Y H:i:s");

[*]

 

[*]header("Expires: {$gmtDate} GMT");

[*]header("Last-Modified: {$gmtDate} GMT");

[*]header("Cache-Control: no-cache, must-revalidate");

[*]header("Pragma: no-cache");

[*]

 

[*]//os readers acima serao explicados apos o script

[*]

 

[*]$n = $_GET["n"]; //pegar a variavei enviada

[*]

 

[*]//vamos multiplicar essa variavel por 50

[*]$n *= 50;

[*]

 

[*]echo $n; //agora vamos "retornar" o valor, para isso escrevemos ele

[*]

 

[*]?>

 

como vimos, o script recebe um numero, e multiplica ele por 50, e depois retorna o novo valor, para um uso pratico, poderiamos puxar dados no banco de dados e retornar, oq seria um uso real disso

 

os headers iniciais, em base querem dizer: "NAO USE O CACHE DO BROWSER!!!"

ou seja, sevem pra você n correr o risco de tentar baixar coisas do cache, oq seria inutil para uma linguagem server-side

 

agora vamos criar o script final, que usa nossos scripts pre-criados

 

calcula.php

 

<html><head><title> Uso do Ajax </title><script src="ajaxInit.js" language="javascript" type="text/javascript"></script><script>function calcula() {  valIni = document.getElementById("valorIni").value;  ajax = ajaxInit();  if(ajax) {    ajax.open("GET", "scriptAjax.php?n=" + valIni, true);    ajax.onreadystatechange = function() {      if(ajax.readyState == 4) {        if(ajax.status == 200) {          document.getElementById("resultado").value = ajax.responseText;        } else {          alert(ajax.statusText);        }      }    }    ajax.send(null);  }}</script></head><body><input type="text" id="valorIni"> * 50 = <input type="text" id="resultado" readonly="true"> <button type="button" onclick="calcula();">Calcular</button></body></html>
bom, acho que deu pra entender neh galera, o script manda o valor de N por get, pelo proprio endereco (scriptAjax.php?n=xxx), pra completar, eu vo ensina abaixo como seria pra enviar esse mesmo dado por POST:

 

 

...ajax.open("POST", "scriptAjax.php", true);ajax.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");...ajax.send("n=" + valIni);
escrevi os ... pra dizer q a parte do codigo q falta, tanto por get como por post, na hora de enviar variaveis, você deve as separar por &, td numa string soh (mesmo no post, n pense q ele aceita varios argumentos pois é um só)

 

vo dexa a descricao dos objetos abaixo (peguei no PHPBrasil):

 

abort():

Pára a requisição atual.

 

getAllResponseHeaders():

Retorna todos os cabeçalhos (labels e valores) como uma string.

 

getResponseHeader("headerLabel"):

Retorna o valor de um único label do cabeçalho.

 

open("metodo", "URL"[, asyncFlag[, "userName"[, "password"]]]):

Define a página a ser aberta, o método (GET | POST), a URL, o marcador de "assíncrono", e, se a página requerer login, o nome de usuário e a senha.

 

send(content):

Envia a requisição, opcionalmente pode ser uma string ou até um objeto DOM.

 

setRequestHeader("label", "valor"):

Define um par label + valor para ser enviado com o cabeçalho da requisição atual.

 

E as propriedades:

 

onreadystatechange:

(!) Método a ser invocado quando o estado (definido em readyState) mudar. (!)

 

readyState:

Inteiro representando o estado da requisição:

0 = não inicializado

1 = carregando

2 = carregado

3 = modo interativo

4 = completado

 

responseText:

Versão em string dos dados retornados pela requisição.

 

responseXML:

Objeto DOM retornado pela requisição

 

status:

Código numérico do estado da requisição retornado pelo servidor. O conhecido 404 "Not Found" e o menos conhecido, mas mais importante 200 "Ok"

 

statusText:

A string que acompanha o código de estado acima ("Not Found", "Ok", etc)

 

flw galera!

Compartilhar este post


Link para o post
Compartilhar em outros sites

bom galera, pra completar aqui, vou mostrar um exemplo pratico do uso do Ajax

 

vamos aqui aprender a criar um sistema de contagem de usuarios online, a diferenca desse sistema para os demais da net, eh q ele funciona em tempo real, ou seja, c alguem entrar no site, ou sair (o prazo de tempo expirar), o contador eh atualizado na mesma hora, sem precisar trocar de pagina

 

pra nao complicar, usaremos um arquivo de texto simples no lugar de um banco de dados

 

quanto a explicacao, agora eu vou me focar mais no javascript do que no PHP, pois eu nao expliquei bem isso no tutorial, e podem ter ficado duvidas, vamos agora criar o script PHP que faz a contagem e atualizacao dos usuarios online

 

usersCount.php

 

PHP

 

 

 

 

[*]<?php

[*]

 

[*]$gmtDate = gmdate("D, d M Y H:i:s");

[*]header("Expires: {$gmtDate} GMT");

[*]header("Last-Modified: {$gmtDate} GMT");

[*]header("Cache-Control: no-cache, must-revalidate");

[*]header("Pragma: no-cache");

[*]

 

[*]//os headers acima ja foram explicados no tutorial

[*]

 

[*]$timeExpire = 30; //tempo em segundos para expirar usuario

[*]$fileName = "online.txt"; //nome do arquivo a ser usado

[*]

 

[*]//criar o arquivo se ele não existir

[*]if(!file_exists($fileName)) {

[*]$f = fopen($fileName, "w");

[*]fclose($f);

[*]}

[*]

 

[*]$ip = $_SERVER['REMOTE_ADDR']; //pegar ip do usuario

[*]$tempo = time(); //pegar o timespan

[*]

 

[*]$stringUser = $ip . ":" . $tempo; //concatenamos usando o caractere : como divisor

[*]

 

[*]$onlineNow = file_get_contents($fileName); //arquivo txt com dados de usuarios atuais

[*]$arrayNow = explode("|", $onlineNow); //o divisor usado para separar valores é |

[*]$newUsers = array(); //essa array irá gravar os usuarios ainda online

[*]

 

[*]//agora vamos filtrar os usuarios com timespan vencido

[*]foreach($arrayNow as $an) {

[*]list($tIP, $tTime) = explode(":", $an); //separamos usando o separador previamente definido

[*]

 

[*]if($tIP != NULL && $tTime != NULL && $tIP != $ip && $tTime > $tempo - $timeExpire) {

[*]$newUsers[] = $tIP . ":" . $tTime; //caso o usuario passe no teste, ele é adicionado

[*]}

[*]}

[*]

 

[*]$newUsers[] = $stringUser; //adicionando o usuario atual

[*]

 

[*]file_put_contents($fileName, implode("|", $newUsers)); //atualiza o arquivo

[*]

 

[*]echo count($newUsers); //escreve a quantidade de usuarios atual

[*]

 

[*]?>

 

dexei comentarios expalhados, entao esse script é auto-explicativo, postem em caso de duvidas

 

vamos usar o arquivo ajaxInit.js que criamos no tutorial, e agora vamos ao script js que vai ler esses dados:

 

usersCount.js

 

function contaUsuarios(spanID) {	var usersCountTmpVar = document.getElementById(spanID);		if(!usersCountTmpVar) {  alert("Campo não encontrado");  return; //se ele não encontrar o campo, da um alerta e escapa a funcao	}		var ajaxUC = ajaxInit(); //inicia a variavel ajax para uso e UserCount	ajaxUC.open("GET", "usersCount.php", true);	ajaxUC.onreadystatechange = function() { //funcao executada ao trocar de stado  if(ajaxUC.readyState == 4) { //verifica se o estado atual é "concluido"  	if(ajaxUC.status == 200) { //verifica se o arquivo foi lido corretamente    usersCountTmpVar.innerHTML = ajaxUC.responseText + " usuários online"; //define o texto do span  	}  	  	setTimeout("contaUsuarios('" + spanID + "')", 2000); //reexecutar a funcao apos 2 segundos  }	}	ajaxUC.send(null); //enviar dados para poder receber resposta}
bom, nem tem mto oq explicar ai, foi passado um parametro que indica o objeto aonde o texto informativo vai ser colocado, o resto ta auto-explicativo, consultem o tutorial para ver como funcionam os metodos do ajax

 

agora que temos os scripts prontos, vamos usa-los

 

pagina.php

 

<!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><title> :: Ajax - Contador de Usuarios :: </title><script src="ajaxInit.js" type="text/javascript"></script><script src="usersCount.js" type="text/javascript"></script></head><body onload="contaUsuarios('usuariosOnline');"><span id="usuariosOnline"></span></body></html>
como podem ver, incluimos os arquivos js que serao usados, definimos uma tag <span> (tambem poderia ser <div>), e colocamos um identificador (id) nela, e na tag body, dizemos que ao ler o documento, ele deve executar a funcao de contar usuarios, passando o retorno para o identificador 'usuariosOnline', nao podem esquecer de usar aspas, senao vai dar erro

 

pra quem nao sabe, a diferenca principal entre <span> e <div> é que o <div> assim que usado, ele preenche o maximo de margem horizontal que ele puder, ou seja, apos um div, qualquer coisa no HTML vai vir numa linha inferior, enquanto o <span> soh ocupa o espaco usado pelo seu HTML interno, c você digitar algo apos o span, esse algo vai aparecer ao lado, e nao em baixo

 

flw, espero q tenham curtido o tuto Imagem Postada

Compartilhar este post


Link para o post
Compartilhar em outros sites

Caro Wiler, sane algumas dúvidas por favor.

 

esta linha:

 

document.getElementById("resultado").value = ajax.responseText;

 

Não compreendi bem a parte em negrito.

 

 

Estou tentando fazer o algo tipo assim:

 

Verificar se algum dado já existe no db, quando se faz o cadastro, tipo verificar o e-mail se consta ou não.

 

Pensei em algo tipo assim:

 

faça a consulta ao DB, e se encontrar algo no DB rode este código:

 

document.getElementById("msg").display="block";

 

 

Conheça alguns bons tutoriais sobre assunto.

 

Um abraço.

Compartilhar este post


Link para o post
Compartilhar em outros sites

eh o seguinte kra, o ajax.responseText eh o texto q o ajax recebeu ao fazer a consulta no arquivo, você pode faze um script PHP assim:

 

<?

 

mysql_connect("xx", "xx", "xx");

mysql_select_db("xx");

 

$valor = $_GET["valor"];

 

$query = mysql_query("select * from tabela where campo = '$valor'");

 

if(mysql_num_rows($query) > 0) {

echo "1";

} else {

echo "0";

}

 

?>

 

agora você ja sabe, q c o valor existir, o PHP vai escrever o valor 1, caso contrario, vai escrever o valor 0, ai você faria o seguinte no seu kso:

 

function verifica(val) {

var ajax = ajaxInit();

ajax.open("GET", "meuphp.php?valor=" + val, true);

ajax.onreadystatechange = function() {

if(ajax.readyState == 4) {

if(ajax.status == 200) {

var retVal = ajax.responseText; //aki vai ser o valor 0 ou 1, dependendo dele ter encontrado ou n

if(retVal == "1") {

document.getElementById("msg").display="block";

}

} else {

alert("erro: " + ajax.statusText);

}

}

}

}

 

espero q tenha conseguido entender, qq duvida volta a postar Imagem Postada

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cara não estou conseguindo, não sei onde estou errando.

 

Mas o início é assim mesmo, errando até aprender.

 

Vou postar meus códigos aqui, caso possa dar uma analisa ficarei agradecido.

 

Página cadastro.htm

<!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>

<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />

<title>Cadastro, consulta Ajax</title>

<script type="text/javascript" src="inicia_ajax.js"></script>

<script type="text/javascript">

function verifica() {

var email = document.getElementById("email").value;

var ajax = ajaxInit();

ajax.open("GET", "consulta_db.php?email=" + email, true);

ajax.onreadystatechange = function() {

if(ajax.readyState == 4) {

if(ajax.status == 200) {

var retVal = ajax.responseText; //aki vai ser o valor 0 ou 1, dependendo dele ter encontrado ou n

if(retVal == "1") {

document.getElementById("msg").display="block";

}

} else {

alert("erro: " + ajax.statusText);

}

}

}

}

</script>

<style type="text/css">

#msg {display: none}

</style>

</head>

 

<body>

 

<h2>Cadastre-se</h2>

 

<div id="msg"><p>Ufa! funfou o Ajax</p></div>

 

<form id="cadastro" method="get" action="">

<p>Nome: <input type="text" name="nome" id="nome" /></p>

<p>E-mail: <input type="text" name="email" id="email" /></p>

<p><button type="button" onclick="verifica();">Testar o Ajax</button></p>

</form>

 

</body>

</html>

O arquivo: inicia_ajax.js é o criado por você.

 

Página consulta_db.php

 

<?php

$gmtDate = gmdate("D, d M Y H:i:s");

 

header("Expires: {$gmtDate} GMT");

header("Last-Modified: {$gmtDate) GMT");

header("Cache-Control: no-cache, must-revalidate");

header("Pragma: no-chache");

 

mysql_connect("localhost", "root", "");

mysql_select_db("tutoriais");

 

$valor = $_GET["email"];

 

$query = mysql_query("select * from contatos where email = '$valor'");

 

if(mysql_num_rows($query) > 0) {

echo "1";

} else {

echo "0";

}

 

?>

Por enquanto, obrigado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

achei seu erro kra =P

 

eh bem simples, esta na linha:

 

document.getElementById("msg").display="block";

 

troque ela por:

 

document.getElementById("msg").style.display="block";

 

espero q funcione Imagem Postada flw

Compartilhar este post


Link para o post
Compartilhar em outros sites

Acho que o erro está ocorrendo da seguinte forma:<form id="cadastro" method="get" action=""><p>Nome: <input type="text" name="nome" id="nome" /></p><p>E-mail: <input type="text" name="email" id="email" /></p><p><button type="button" onclick="verifica();">Testar o Ajax</button></p></form>Como o form não tem um submit, não está enviado o valor do email para a página, e com o botão o form não é enviado.Mas se coloco um submit ou coloco o type do button como submit, ocorre o reload na página.

Compartilhar este post


Link para o post
Compartilhar em outros sites

kra, e vi agora, tipo, o problema ta ai, mas n da maneira q você falou... n eh preciso dar submit, o erro eh simples, como o email eh o um ID, você n pode definir uma variavei no javascript com o nome email (frescura mermo), entao seu javascript deve ficar assim:<script type="text/javascript">function verifica() {var emailV = document.getElementById("email").value;var ajax = ajaxInit();ajax.open("GET", "consulta_db.php?email=" + emailV, true);ajax.onreadystatechange = function() {if(ajax.readyState == 4) {if(ajax.status == 200) {var retVal = ajax.responseText; //aki vai ser o valor 0 ou 1, dependendo dele ter encontrado ou nif(retVal == "1") {document.getElementById("msg").style.display="block";}} else {alert("erro: " + ajax.statusText);}}}}</script>eu soh fiz trocar o nome da variavel, testa ai (tb coloquei o .style.display)

Compartilhar este post


Link para o post
Compartilhar em outros sites

posta pra mim o codigo completo ai (como esta atualmente, apos as modificacoes), q eu vo testa aki, e vo v o problema

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cara desculpe a demora,

 

mas vou postar os códigos agora como estão atualmente.

 

Página cadastro.htm

 

<!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><meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /><title>Cadastro, consulta Ajax</title><script type="text/javascript" src="inicia_ajax.js"></script><script type="text/javascript">function verifica() {var emailV = document.getElementById("email").value;var ajax = ajaxInit();ajax.open("GET", "consulta_db.php?email=" + emailV, true);ajax.onreadystatechange = function() {if(ajax.readyState == 4) {if(ajax.status == 200) {var retVal = ajax.responseText; //aki vai ser o valor 0 ou 1, dependendo dele ter encontrado ou nif(retVal == "1") {document.getElementById("msg").style.display="block";}} else {alert("erro: " + ajax.statusText);}}}}</script><style type="text/css">#msg {display: none}</style></head><body><h2>Cadastre-se</h2><div id="msg"><p>Ufa! funfou o Ajax</p></div><form id="cadastro" method="get" action=""><p>Nome: <input type="text" name="nome" id="nome" /></p><p>E-mail: <input type="text" name="email" id="email" /></p><p><button type="button" onclick="verifica();">Testar o Ajax</button></p></form></body></html>

Página inicia_ajax.js

function ajaxInit() {var req;try { req = new ActiveXObject("Microsoft.XMLHTTP");} catch(e) { try {  req = new ActiveXObject("Msxml2.XMLHTTP"); } catch(ex) {  try {   req = new XMLHttpRequest();  } catch(exc) {   alert("Esse browser não tem recursos para uso do Ajax");   req = null;  } }}return req;}

Página consulta_db.php

 

<?php$gmtDate = gmdate("D, d M Y H:i:s");header("Expires: {$gmtDate} GMT");header("Last-Modified: {$gmtDate) GMT");header("Cache-Control: no-cache, must-revalidate");header("Pragma: no-chache");mysql_connect("localhost", "root", "");mysql_select_db("tutoriais");$valor = $_GET["email"];$query = mysql_query("select * from contatos where email = '$valor'");if(mysql_num_rows($query) > 0) {echo "1";} else {echo "0";}?>

SQL da tabela no DB.

 

CREATE TABLE `contatos` (  `id` int(3) NOT NULL auto_increment,  `nome` varchar(50) NOT NULL default '',  `email` varchar(40) NOT NULL default '',  PRIMARY KEY  (`id`)) TYPE=MyISAM AUTO_INCREMENT=7;-- -- Dumping data for table `contatos`-- INSERT INTO `contatos` VALUES (6, 'Pinho', 'leandro@plugsites.net');INSERT INTO `contatos` VALUES (5, 'Vieira', 'leandro@dwmx.com.br');INSERT INTO `contatos` VALUES (4, 'Leandro', 'leandro@plugsites.net');        

Ufa, pronto, vou tentando aqui também.

 

Um abraço.

Compartilhar este post


Link para o post
Compartilhar em outros sites

AEHuihAEIOhIOAEHioHAEOIhoIAE

 

como eh q eu n vi isso antes... kra... você esqueceu de usar um comando do ajax...

 

ajax.send(null);

 

pode ver pelo meu tutorial, ta faltando esse comando ai no seu...

 

dando uma ajustada, essa parte do seu script tem q ficar assim:

<script type="text/javascript">function verifica() {var emailV = document.getElementById("email").value;var ajax = ajaxInit();ajax.open("GET", "consulta_db.php?email=" + emailV, true);ajax.onreadystatechange = function() {if(ajax.readyState == 4) {if(ajax.status == 200) {var retVal = ajax.responseText; //aki vai ser o valor 0 ou 1, dependendo dele ter encontrado ou nif(retVal == "1") {document.getElementById("msg").style.display="block";}} else {alert("erro: " + ajax.statusText);}}}ajax.send(null); //essa foi a linha adicionada}</script>
agora eu tenho 95% de certeza q isso vai funcionar Imagem Postada

 

mas c n funcionar, pode voltar a postar q eu ajudo novamente, e c funcionar, posta tb, pra o pessoal saber q funciono

 

flws

Compartilhar este post


Link para o post
Compartilhar em outros sites

AHahfyefhyahayahahahayahayFunfou :clap: :clap:Mas tem um detalhe, na página consulta_db.php não pode ter este código:

$gmtDate = gmdate("D, d M Y H:i:s");header("Expires: {$gmtDate} GMT");header("Last-Modified: {$gmtDate) GMT");header("Cache-Control: no-cache, must-revalidate");header("Pragma: no-chache");

Sem ele, funciona legal. :clap:

Compartilhar este post


Link para o post
Compartilhar em outros sites

eu sempre coloco esse codigo ai... e nunca deu problema Imagem Postada

 

mas td bem... o importante eh q funciono ^^

Compartilhar este post


Link para o post
Compartilhar em outros sites

Wilker, muito bom seu tutorial, ja estou a usar isto nos meus formulários para em vez de se enviar e dps verificar os dados ele verifica logo tudo na hora Imagem Postada

Compartilhar este post


Link para o post
Compartilhar em outros sites

vlw snake ^^

 

oia, pra quem pretende usar Ajax em webforms eu tenho uma dica, existe uma maneira + pratica de pegar todos os campos (exeto campos file) e enviar por ajax, vo mostra aki um script q eu fiz pra isso, pra facilita a vida dos webforms:

 

soh + uma coisa antes de dar o exemplo, bom, n sei c vcs ja passaram por isso, mas temos problemas de caracteres acentuados ao usar o Ajax (tenter enviar dados acentuados e vejam como eles chegam do outro lado), esse meu script tem tb um treco legal que resolve o problema de acentuacao do Ajax, mas tem uma pequena limitacao... ele soh resolve pra os 256 caracteres basicos da tabela ASCII (a tabela extendida n vale)

 

formSender.php

PHP

[*]<!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> 

[*]<title>Enviar Formulario por Ajax</title> 

[*]<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> 

[*]<script type="text/javascript" src="ajax.js"></script> 

[*]<script type="text/javascript"

[*]<!--

[*]

[*]function DecHex(dec2) { 

[*] var hex_chars = "0123456789ABCDEF"

[*]

[*] var n1 = hex_chars.charAt(Math.floor(dec2 / 16)); 

[*] var n2 = hex_chars.charAt(dec2 % 16)

[*]

[*] return n1 + n2; 

[*]} 

[*]

[*]function formSender(f) { 

[*] var acao = f.action; 

[*] var metodo = f.method.toLowerCase()

[*]  

[*] if(!acao) { 

[*] alert("erro: o valor action do formulario nao foi definido")

[*] } 

[*]  

[*] var send = new Array()

[*] var elementos = f.elements; 

[*]  

[*] for(var i = 0; i < elementos.length; i++) { 

[*] var e = elementos

[*] if(!e.name) 

[*] continue

[*]  

[*] var nVal = ""

[*]  

[*] for(var x = 0; x < e.value.length; x++) { 

[*] codeA = e.value.charCodeAt(x)

[*] codeA = DecHex(codeA)

[*] nVal += "%" + codeA; 

[*] } 

[*]  

[*] var tipo = e.type.toLowerCase()

[*]  

[*] if(tipo != "checkbox" && tipo != "radio") { 

[*] send[send.length] = e.name + "=" + nVal; 

[*] } else { 

[*] if(e.checked) { 

[*] send[send.length] = e.name + "=" + nVal; 

[*] } 

[*] } 

[*] } 

[*]  

[*] send = send.join("&")

[*]  

[*] alert(send)//apague essa linha, so coloquei ela para voce ver como fica a querystring 

[*]  

[*] var ajax = ajaxInit()

[*]  

[*] if(ajax) { 

[*] if(metodo == "post") { 

[*] ajax.open("POST", acao, true)

[*] ajax.setRequestHeader("Content-Type", "application/x-www-form-urlencoded")

[*] } else { 

[*] ajax.open("GET", acao + "?" + send, true)

[*] } 

[*]  

[*] ajax.onreadystatechange = function() { 

[*] //execute aqui as acoes 

[*] } 

[*]  

[*] if(metodo == "post") { 

[*] ajax.send(send)

[*] } else { 

[*] ajax.send(null)

[*] } 

[*] } 

[*]} 

[*]

[*]-->

[*]</script> 

[*]</head> 

[*]

[*]<body>

[*]<h1>Formulario via Ajax</h1>

[*]<form action="retorno.php" method="post" onsubmit="formSender(this); return false;"> 

[*]<div>

[*]<input type="hidden" name="escondido" value="valorEsc" /> 

[*]<input type="text" name="nome" /><br /> 

[*]<input type="text" name="" /><br /> 

[*]<input type="checkbox" name="checar[]" value="val1" /><br /> 

[*]<input type="checkbox" name="checar[]" value="val2" /><br /> 

[*]<input type="checkbox" name="checar[]" value="val3" /><br /> 

[*]<input type="radio" name="radios" value="radio1" /><br /> 

[*]<input type="radio" name="radios" value="radio2" /><br /> 

[*]<input type="radio" name="radios" value="radio3" /><br /> 

[*]<input type="file" name="arquivo" /><br /> 

[*]<button type="submit">Enviar</button>

[*]</div>

[*]</form>

[*]</body> 

[*]</html>

 

para os campos file, ele vai enviar apenas o caminho do arquivo... por isso n funciona, soh coloquei ele no teste ai pra vcs verem como fica

 

flw

 

obs: esse script foi editado dia 29/7/2005 para ficar nos padroes XHTML 1.0 da W3, quem quizer pode testa-lo no site: http://validator.w3.org

Compartilhar este post


Link para o post
Compartilhar em outros sites

Grande Wilker, parabens pelo seu tutorial. mt bom mesmo, me responde uma coisa, queria fazer inserir os dados de um formulário em uma tabela que está de baixo do form, dinamicamente com ajax, tem como fazer??

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.