24 Março 2006
Duvidas!? Comentem!!
Aê galera, caso tenha alguma dúvida referente aos assuntos aqui abordados mandem comentários, assim posso ajudar com o que for possível.
Se quiserem ver alguma matéria sobre algo mais especifico sugiram que eu vou procurar atender...
abraços
Se quiserem ver alguma matéria sobre algo mais especifico sugiram que eu vou procurar atender...
abraços
20 Março 2006
Google adquire a Writely
Já havia mencionado sobre Writely (Gerenciador de arquivos em Ajax), mas hoje fiquei sabendo que esta foi comprada pelo Google.
Google adora idéias e compra as empresas que as criam. Quisera eu de criar uma boa idéia para o Google comprar.
Google adora idéias e compra as empresas que as criam. Quisera eu de criar uma boa idéia para o Google comprar.
10 Março 2006
Combos Dinâmicas
Vou explicar um pouco de como trabalhar com elementos SELECT do HTML de forma inâmica e com conteúdo atualizavel via AJAX.
Para isso é necessário que se tenha uma combo. Abaixo segue um exemplo em HTML:
Esse combo fica assim:
O Elemento <optgroup></optgroup> gera um grupo dentro do combo. Para o elemento SELECT existem as seguintes propriedades diferentes dos demais:
Size: define o numero de elementos que irão aparecer, como nesse exemplo que foi informado com a propriedade size = 2:
Multiple: define se pode ser selecionado mais de um elemento. Exemplo: multiple="multiple"
Para selecionar mantenha pressionada a tecla CTRL e clique nos elementos
Vamos agora a um exemplo de uso da combo, mas de forma dinâmica. Vou criar 2 funções que farão a atualização da combo, uma vai enviar os dados via AJAX e outra vai receber o retorno da solicitação:
A função Cidade(estado) recebe como paramêtro o estado que ele realizará a consulta, fazendo essa pelo método Ajax.Request que já conhecemos de outro tutorial.
Fazemos 2 eventos na função retCidade(or1), a primeira é limpar a combo. Para isso é necessário fazer um loop que varra todos os elementos e os remova.
O método remove(index) do elemento select faz com que o item com index informado no parametro seja removido. Depois o que fazemos é transformar o retorno (caso haja retorno) em linguagem JavaScript com a função eval():
Por fim incluimos um item utilizando o método add da collection options do elemento select. Complexo? É não, olha abaixo:
Isso funcionaria também sem a ajuda da prototype:
Só para finalizar, esse é o código PHP:
Como resultado de tudo isso temos o seguinte exemplo: Exemplo 1
Para isso é necessário que se tenha uma combo. Abaixo segue um exemplo em HTML:
<select name="cmbteste" id="cmbteste">
<optgroup label="Grupo 1">
<option>teste1</option>
<option>teste2</option>
<option>teste3</option>
<option>teste4</option>
</optgroup>
</select>
Esse combo fica assim:
O Elemento <optgroup></optgroup> gera um grupo dentro do combo. Para o elemento SELECT existem as seguintes propriedades diferentes dos demais:
Size: define o numero de elementos que irão aparecer, como nesse exemplo que foi informado com a propriedade size = 2:
Multiple: define se pode ser selecionado mais de um elemento. Exemplo: multiple="multiple"
Para selecionar mantenha pressionada a tecla CTRL e clique nos elementos
Vamos agora a um exemplo de uso da combo, mas de forma dinâmica. Vou criar 2 funções que farão a atualização da combo, uma vai enviar os dados via AJAX e outra vai receber o retorno da solicitação:
function Cidades(estado){
url = "http://localhost/buscacidade.php";
pars = "estado=" + estado;
var myAjax = new Ajax.Request( url, {method: 'post',
parameters: pars,
onComplete: retCidade});
}
function retCidade(or1){
total = $("cmbcidade").length;
for(i=0;i<total;i++){
$("cmbcidade").remove(0);
}
if (or1.responseText == ""){
$("cmbcidade").options.add(
new Option("Nada encontrado",0));
}else{
eval(or1.responseText);
for(i=0;i<cidade.length;i++){
$("cmbcidade").options.add(
new Option(cidade[i].Nome,cidade[i].ID));
}
}
}
A função Cidade(estado) recebe como paramêtro o estado que ele realizará a consulta, fazendo essa pelo método Ajax.Request que já conhecemos de outro tutorial.
Fazemos 2 eventos na função retCidade(or1), a primeira é limpar a combo. Para isso é necessário fazer um loop que varra todos os elementos e os remova.
total = $("cmbcidade").length;
for(i=0;i<total;i++){
$("cmbcidade").remove(0);
}
O método remove(index) do elemento select faz com que o item com index informado no parametro seja removido. Depois o que fazemos é transformar o retorno (caso haja retorno) em linguagem JavaScript com a função eval():
eval(or1.responseText);
Por fim incluimos um item utilizando o método add da collection options do elemento select. Complexo? É não, olha abaixo:
$("cmbcidade").options.add(
new Option(cidade[i].Nome,cidade[i].ID));
Isso funcionaria também sem a ajuda da prototype:
document.forms[0].cmbcidade.options.add(
new Option(cidade[i].Nome,cidade[i].ID));
Só para finalizar, esse é o código PHP:
<?
header("Content-type: text/html; charset=ISO-8859-1");
switch ($_REQUEST["estado"]){
case "SP":
cidades("Araraquara,Araras,Americana,Judiaí,Santos,
São Carlos,São Paulo");
break;
case "RJ":
cidades("Rio de Janeiro,Parati,Angra dos Reis");
break;
case "PR":
cidades("Curitiba,Camboriú");
break;
case "SC":
cidades("Florianópolis,Blumenau");
break;
case "RS":
cidades("Porto Alegre,Gramado,Canela,Caxias do Sul");
break;
}
function cidades($par1){
$city = split(",",$par1);
if (count($city)==0)
return;
echo "var cidade = new Array();\n";
for ($i=0;$i<count($city);$i++){
echo "cidade[$i] = new Object();\n";
echo "cidade[$i].Nome='".$city[$i]."';\n";
echo "cidade[$i].ID='".$i."';\n";
}
}
?>
Como resultado de tudo isso temos o seguinte exemplo: Exemplo 1
06 Março 2006
Prototype -> Login Ajax
Respondendo a uma duvida da comunidade no Orkut resolvi criar aqui um validador de login e senha em Ajax. Primeiro vamos criar
uma página de login:
Nada de mais só um simples formulário. Na verdade o que vária é que no lugar de um botão submit temos um simplesmente um botão com ação onclick definida para a função Login().
São 2 funções, uma que envia os dados de login e outra que recebe e determina o que fazer:
Lembre-se de colocar a biblioteca prototype.js no arqivo. O que o método login faz é chamar a página que efetua o login passando os parametros e definindo como retLogin() como a função que será chamada quando a página retornar.
A página efetualogin.php simplesmente é uma sequência de validação com retorno de mensagem.
Eis como fica o resultado: Exemplo 1
uma página de login:
<body>
<div id="loginDIV">
<h3>Login</h3>
<form name="frmLogin">
Login: <input type="text" name="login" id="login" />
Senha: <input type="password" name="senha" id="senha" />
<input type="button" value="login" onclick="Login()" />
</form>
</div>
</body>
Nada de mais só um simples formulário. Na verdade o que vária é que no lugar de um botão submit temos um simplesmente um botão com ação onclick definida para a função Login().
São 2 funções, uma que envia os dados de login e outra que recebe e determina o que fazer:
function Login(){
login = $("login").value;
senha = $("senha").value;
url = "http://localhost/efetualogin.php";
pars = "login=" + login + "&senha=" + senha;
var myAjax = new Ajax.Request( url, {method: 'post',
parameters: pars,
onComplete: retLogin});
}
function retLogin(or1){
if (or1.responseText == "OK"){
//Login efetuado
alert("login efetuado!");
$("loginDIV").style.display="none";
}else{
alert(or1.responseText);
}
}
Lembre-se de colocar a biblioteca prototype.js no arqivo. O que o método login faz é chamar a página que efetua o login passando os parametros e definindo como retLogin() como a função que será chamada quando a página retornar.
A página efetualogin.php simplesmente é uma sequência de validação com retorno de mensagem.
<?
header("Content-type: text/html; charset=ISO-8859-1");
$login = $_REQUEST["login"];
$senha = $_REQUEST["senha"];
if ($login == "teste"){
if ($senha == "teste")
echo "OK";
else
echo "Senha Inválida";
}else{
echo "Login Inválido";
}
?>
Eis como fica o resultado: Exemplo 1
Assinar Postagens [Atom]