Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Prezados,
Estou na seguinte situação: há uma tabela alunos e um formulário de inscrição de eventos.
O usuário preenche o formulário, um dos primeiros campos é o CPF, assim que ele preenche o input, a idéia é que seja verificado no banco se esse CPF existe e caso exista, informar e perguntar ao usuário se ele deseja que as informações dele sejam carregadas, se ele dizer sim, é atualizado os inputs (sem refresh) das informações dele que vem do banco, se ele dizer não nada é feito.
Tá difícil... A ideia desde o início, assim que ele sai do campo faço o post dessa informação através do AJAX, até aí tranquilo.
Agora o resultado desse POST, deve trazer-me caso existe esse CPF no banco, uma caixa de confirmação (yes no) se ele deseja carregar as informações dele, se ele dizer sim eu substituo os inputs (atualizo-os, não sei a melhor maneira) com os valores do campo.
O meu maior, maior problema é ser tão ruim em Javascript!
Ainda assim não é difícil. Aquilo que você quer fazer depois que a consulta for feita vai acontecer no callback success de $.ajax.
O Eduardo simplesmente adicionou um páragrafo num determinado elemento, você vai mudar isso verificando se houve retorno e adicionando um JavaScript Confirm (exemplo bem incompleto no site) e caso a pessoa concorde você faz mais alguma coisa.
Esse "mais alguma coisa" é simplesmente preencher os campos com jQuery.val(), já que você não vai fazer uma nova requisição sendo que poderia ter trazido os dados logo da primeira vez.
Mas o maior "problema" dessa abordagem é a segurança, já que eu duvido que alguém vá preencher o CPF num site inseguro. Não estou dizendo que seu site é inseguro, mas acho que você entendeu onde quero chegar.
Acho que vocês me deram uma luz, vou tentar e dou um retorno a todos!
Muitissimo obrigado :D
Tentei da seguinte maneira:
function generateXMLHttp() {
if (typeof XMLHttpRequest != "undefined"){
return new XMLHttpRequest();
}
else{
if (window.ActiveXObject){
var versions = ["MSXML2.XMLHttp.5.0",
"MSXML2.XMLHttp.4.0",
"MSXML2.XMLHttp.3.0",
"MSXML2.XMLHttp",
"Microsoft.XMLHttp"
];
}
}
for (var i=0; i < versions.length; i++){
try{
return new ActiveXObject(versions[i]);
}catch(e){}
}
alert('Seu navegador não pode trabalhar com Ajax!');
}
function getById() {
var cpf = document.getElementById("cpf").value;
var hehe = document.getElementById("hehe");
var XMLHttp = generateXMLHttp();
XMLHttp.open("get", "lib/ajax_cpf.php?cpf=" + cpf, true);
XMLHttp.onreadystatechange = function(){
if (XMLHttp.readyState == 4)
if (XMLHttp.status == 200){
result.innerHTML = XMLHttp.responseText;
} else {
result.innerHTML = "Um erro ocorreu: " + XMLHttp.statusText;
}
};
XMLHttp.send(null);
}
E fiz os inputs:
<input type="text" name="cpf" id="cpf"value="">
<input type="text" name="hehe" id="hehe"value="">
E minha página ajax_cpf.php
<?php
echo 'Valor desejado';
?>
Teste básico dos básicos, e não funcionou.
Caramba... JavaScript quebra minhas pernas!
Quem é a variável result ?
leia:
http://wbruno.com.br/javascript-puro/como-debugar-javascript-firefox-erros-comuns/
http://wbruno.com.br/ajax/como-debugar-ajax-firebug/
funcionando:
<p id="result"></p>
<input type="text" id="cpf" />
<script>
function getById() {
var $result = document.getElementById("result"),
cpf = document.getElementById("cpf").value,
xmlhttp = new XMLHttpRequest();
xmlhttp.open("GET", "a.php?cpf=" + cpf, true);
xmlhttp.send();
xmlhttp.onreadystatechange = function() {
if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
$result.innerHTML = xmlhttp.responseText;
} else {
$result.innerHTML = "Um erro ocorreu: " + xmlhttp.statusText;
}
};
}
getById();
</script>
Leia os links que vc entenderá como programar em js/ajax debugando e entendendo oq está acontecendo.
Qnto a proposta do primeiro post:
Está exibindo o retorno do ajax sem alterar o campo. Sendo que ele deve fazer a requisição só quando eu mudar de campo.
Ou é minha newbiece que está me matando mesmo?
Ainda vou ser bom o suficiente em JS para ajudar. (yn)
Está fazendo sem escrever nada no campo, pq eu disparei a função sem depender de nenhum evento do campo.
e sim, só ao carregar a página. Leia o código.
Cara, eu não sei funções JavaScript, muito menos relaciona-las. Mas sou brasileiro, tentei da seguinte maneira:
Colocando seu código dentro deste:
$(document).ready(function() {
$("input[name=cpfs]").change(function() {
function getById() {
var $result = document.getElementById("result"),
cpfs = document.getElementById("cpfs").value,
xmlhttp = new XMLHttpRequest();
xmlhttp.open("GET", "lib/ajax_cpf.php?cpf=" + cpfs, true);
xmlhttp.send();
xmlhttp.onreadystatechange = function() {
if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
$result.innerHTML = xmlhttp.responseText;
} else {
$result.innerHTML = "Um erro ocorreu: " + xmlhttp.statusText;
}
};
}
getById();
})
})
Sério, a situação tá triste!
@Edit:
Ah, funcionou, faltou o atributo name ao campo, agora está funcionando. Agora a dúvida é a seguinte, eu vou retornar N váriaveis do ajax, e essas váriaveis devem substituir os campos caso o usuário concorde.
Vou dar uma olhada no jQuery.val().
Leia esse código:
http://wbruno.com.br/ajax/input-preenche-formulario-ajax/
Ele faz tudo oque vc quer. Leia com calma.
To conseguindo retornar em Json para a página os valores do aluno, estou agora tentando fazer com que venha já preenchendo os inputs. (que na verdade, o Ajax em sí não é meu maior problema, e sim como montar o Javascript para substituir os campos que desejo)!
Eu chego lá! (:
Consegui recuperar as informações e inclui-las no input, só que agora, preciso realizar essa inclusão da informação nos inputs somente se o usuário concordar, como faço essa lógica no JavaScript de se somente ele clicar em sim no diálogo de confirmação realize a inclusão das informações?
Eu tenho também nesse formulário um combo estado e outro cidade, utilizando Ajax também, no entanto como trazer ambos selecionados com Json? Parece meio complicadinho pra mim isso, até porque não tenho nenhuma luz de como fazer tal, se bem que até o momento é de enorme valia a ajuda de todos!
Mas agora estou nessa, trazer combo selecionado e realizar a confirmação! Muito obrigado até aqui!
Obrigado aos que colaboraram :)
cara pelo que imaginei quando pergunta pro usuario se ele clicar no sim
voce faz uma requisição pelo ajax do jquery
mais ou menos assim, nada muito dificil amiguxo