Ir para conteúdo

POWERED BY:

Arquivado

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

Damage inc.

Sistema de cadastro com Ajax+ASP+Access

Recommended Posts

Olá pessoal, estou iniciando meu estudos em AJAX. Já li vários materiais/tutoriais, aqui e em outros fóruns, mas ainda dou muitas travadas no meio do código. Montei alguns exemplos que achei pela net e funcionaram corretamente e ja estou entendendo o processo.

 

Agora comecei a montar um formulário de cadastro de newsletter. Gostaria de pedir para vocês darem uma olhada no código para ver se fiz algo errado. O mesmo está funcionando, só que ele não esta gravando espaços em branco. Ainda não sei o porque disso, mas estou pesquisando. Caso alguém saiba e possa me ajudar, agradeço. :)

 

o Sistema tem quatro páginas:

- conexao.asp // faz a conexão com o banco de dados ACCESS;

- ajax.js // página com as funções padrões para uso do método Ajax;

- index.asp // página com o formulário e a função do Ajax que chamei de "processadados()";

- cadastra.asp // Insert simples no BD.

 

Tentei descrever no código o que entendi de todo o processo. :)

 

Página INDEX.ASP

 

Na <head> eu chamo a página ajax.js

<body><form method="post" name="frm1" id="frm1">   Nome <br />   <input type="text" name="nome" id="nome" size="40"><br />   Telefone <br />   <input type="text" name="telefone" id="telefone" size="40"><br />   Email<br />   <input type="text" name="email" id="email" size="40"><br />   <input type="button" name="btnEnviar" value=" Enviar " onClick="processadados();">      <!-- div onde será aberta resposta da pagina cadastra.asp -->   <div id='divResposta'></div></form><script> function processadados() {	var Ajax = createXMLHTTP();	var url ="cadastra.asp";		// pegando os campos do formulário	var nomeV = document.getElementById('nome').value;	var emailV = document.getElementById('email').value;	var telefoneV = document.getElementById('telefone').value;	 	//parâmetros a serem enviados	var params = "nome="+nomeV+"&telefone="+telefoneV+"&email="+emailV; 	 	//envia para a página que fará o select do que foi digitado e responderá com o status da ação	Ajax.open("post", url, true);	 	   // para solicitações utilizando o metodo post deve-se acrescentar este cabecalho HTTP,	   // mas não entendi se devo mesmo colocar o charset, pois na página CADASTRA.ASP tem o Response.Header 	   // que resolve o problema da acentuação	   Ajax.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=iso-8859-1");	// essa função é executada sempre que o estado do objeto muda (onreadystatechange)	Ajax.onreadystatechange=function(){		// condição que exibe a informação "Enviando os dados..." enquanto estiver carregando (1)	if(Ajax.readyState == 1) { 	divResposta.innerHTML = ' Enviando os dados...';}	// quando retornar o valor (4) significa que o objeto ja completou a solicitacao	if (Ajax.readyState==4){	  	// exibe o texto gerado no arquivo cadastra.asp e colocado dentro da divResposta	divResposta.innerHTML = Ajax.responseText;}}		//envia os parametros setados acima	Ajax.send(params); }</script></body>

Página CADASTRA.ASP

<%' código para resolver o problema de acentuação antes de retornar o valor para o usuário	Response.AddHeader "Content-Type", "text/html; charset=iso-8859-1"'resgata o que foi digitado no campo de busca	nome = request("nome")	telefone = request("telefone")	email = request("email")	oConn.Execute("INSERT INTO Clientes (nome, telefone, email) VALUES('"&nome&"', '"&telefone&"', '"&email&"')")	Response.write("<br/>Seu email foi cadastrado")	Response.End%>

Bem, o código é simples para quem já esta calejado de trabalhar com Ajax e JavaScript, mas para mim foi difícil e um bom desafio. :D

 

Se alguém puder dar uma olhadinha e ver se a lógica está OK, será de grande ajuda.

 

Abraços

Compartilhar este post


Link para o post
Compartilhar em outros sites

Amigo, o que seria "não esta gravando espaços em branco"?Se você não preencher algum campo ele não grava?Você quer que caso o usuário não digite nada no campo ele preencho o campo todo com espaços em branco?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá benck, o que está acontecendo é que quando a pessoa digita no nome "João da Silva" ele é gravado no banco assim: "JoãodaSilva".Já chequei os campos do BD, mas está tudo correto. Fiz uma inserção sem o AJAX e gravou com o espaço entre o nome e sobrenome. Ainda não descobri o que pode ser, mas continuo pesquisando. :)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom amigo, olhando apenas o código não consigo precisar aonde ocorre exatamente o erro...Tenta ver o conteúdo do "params" quando ele está sendo enviado para ver se está certo, caso esteja mandando certo, dá um response.write no conteúdo dos campos dentro do asp... caso esteja tudo certo o problema deve ser configuração no bancotenta isolar o problema e responde ai o que que deu...Valeu!!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá colega. Achei interessante o seu código acima, e ele serviria para resolver um problema que tenho atualmente. Eu o adaptei para usar numa página minha, mas na linha onde está escrito var Ajax = createXMLHTTP(); o sistema mostra o erro "Object Expected".

 

Alguém poderia me ajudar com isso?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Opa, já resolvi o problema!

 

Troquei o var Ajax = createXMLHTTP(); pela chamada abaixo:

 

var Ajax;

try {Ajax = new XMLHttpRequest();

}catch(ee) {

try {Ajax = new ActiveXObject("Msxml2.XMLHTTP");

}catch(e) {

try {Ajax = new ActiveXObject("Microsoft.XMLHTTP");

}catch(e) {Ajax = false;

}

}

}

 

resolveu o meu problema! Abs a todos!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá Criamix, a variável que você trocou, chamava exatamente este código que você colocou. No meu código eu separei, e deixava ele na página "ajax.js", por isso não funcionou no seu.

 

Desculpe a demora pra responder, estou atoladaço de trabalho e só entrei aqui hoje. http://forum.imasters.com.br/public/style_emoticons/default/blush.gif

 

Ah, esse sistema também não está funcionando no firefox. :(

 

Olha o código da página ajax.js

 

function createXMLHTTP() {  var Ajax;  try  {   Ajax = new ActiveXObject("Microsoft.XMLHTTP");  }  catch(e)  {   try   {	Ajax = new ActiveXObject("Msxml2.XMLHTTP");	alert(Ajax);   }   catch(ex)   {	try	{	 Ajax = new XMLHttpRequest();	}	catch(exc)	{	  alert("Esse browser não tem recursos para uso do Ajax");	  Ajax = null;	}   }   return Ajax;  } 	 var arrSignatures = ["MSXML2.XMLHTTP.5.0", "MSXML2.XMLHTTP.4.0", "MSXML2.XMLHTTP.3.0", "MSXML2.XMLHTTP", "Microsoft.XMLHTTP"];	 for (var i=0; i < arrSignatures.length; i++)	 {	try	{	 var oRequest = new ActiveXObject(arrSignatures[i]);	 return oRequest;	}	catch (oError)	{	   }	 } 	  throw new Error("MSXML não está instalado no seu sistema."); }

Compartilhar este post


Link para o post
Compartilhar em outros sites

Consegui!!!!!!!!!!!!!é só dar um replace nos espaços, para que eles virem "%20".. (Código do caractere espaço na barra de endereço)campos=campos.replace(" ","%20")mas de qualquer forma valew!!!!

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.