Front End

9 fev, 2007

Introdução ao XAJAX

Publicidade

Olá Pessoal. Não venho aqui para falar sobre o que é AJAX (acho que estamos saturados disso correto?), e sim sobre como utilizá-lo na prática. Vamos utilizar um Framework chamado XAJAX, www.xajaxproject.org. Existem inúmeros Frameworks para se trabalhar com AJAX que irão facilitar o desenvolvimento de seus softwares, mas tem alguns pontos que fazem deste Framework um dos melhores.

O que é o XAJAX?

XAJAX é uma classe open source em PHP que permite a vocês criar facilmente poderosas aplicações web em HTML, CSS, JAVASCRIPT e PHP utilizando AJAX. Aplicações que fazem uso do XAJAX podem fazer chamadas a funções escritas em PHP e atualizar o conteúdo de páginas, obterem acesso a um banco de dados etc, sem recarregar a página atual.

Como instalar o XAJAX?

A versão atual do XAJAX é a 0.2.4 (estável). Já está em desenvolvimento a versão beta 2, que irá provavelmente substituir a versão 0.2.x, na versão 0.5 do XAJAX onde foram feitas melhorias, e a melhor delas é a inclusão de suporte a plugins, como script.aculo.us por exemplo que teremos oportunidade de estudar. Iremos utilizar a versão 0.5 beta 2 que encontra-se disponível para download. Faça o download do arquivo, crie uma pasta chamada library dentro de seu servidor web e descompacte os arquivos do XAJAX dentro da pata library (a pasta pode ter qualquer outro nome, esse é o que eu costumo usar).

A estrutura de pastas deverá ficar como da imagem abaixo.

Ao utilizar o XAJAX em ambiente de produção as pastas examples e tests podem ser apagadas, pois as mesmas são só exemplos, e alguns bem interessantes.

Ao primeiro exemplo

Junto (e não dentro) da pasta library crie um arquivo chamado form.php, neste arquivo iremos cria um formulário para validar se os campos Nome e E-Mail estão preenchidos, utilizando o XAJAX sem recarregar a página. Clique na imagem abaixo e veja o código do arquivo form.php:

form.php

<?php
require "./library/xajax/xajax_core/xajax.inc.php";
require "./library/validacoes.php";
?>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>INTRODUÇÃO AO XAJAX</title>
<?php $ajax->printJavascript('./library/xajax/'); ?>
</head>
<body>
<form id="form" name="form" method="post" action="">
  <table width="300" border="0" 
  		align="center" cellpadding="1" cellspacing="1">
    <tr>
      <td colspan="2"><p>INTRODUÇÃO AO XAJAX</p><p>Validado o formulário </p></td>
    </tr>
    <tr>
      <td width="73"> </td>
      <td width="220"><label id="resultado"></label></td>
    </tr>
    <tr>
      <td align="right">Nome:</td>
      <td><input name="nome" type="text" id="nome" 
	  					size="25" maxlength="50" /></td>
    </tr>
    <tr>
      <td align="right">E-Mail:</td>
      <td><input name="email" type="text" id="email" 
	  					size="25" maxlength="75" /></td>
    </tr>
    <tr>
      <td> </td>
      <td><input name="btn" type="button" value="Validar" onClick="xajax_validaForm(document.getElementById('nome').value, document.getElementById('email').value);"/></td>
    </tr>
  </table>
</form>
</body>
</html>
Linhas 2 e 3
  • Na linha 2 é feita a inclusão da class library do XAJAX que iremos trabalhar e na linha 3 o arquivo(validacoes.php) onde iremos escrever a função de validação deste formulário;
Linha 9
  • A função printJavascript() é a responsável pela saída dos dados de forma asincrona e é tem que ficar obrigatoriamente entre as tags do arquivo. O único parametro necessário a essa função é o diretório onde estão os arquivos do XAJAX;

As linhas a seguir são do formulário, observem que todos os elementos utilizados na validação tem o parametro ID em sua tag.

Linha 21
  • Dentro da celula é criado um label com id=”resultado” para que a resposta da validação seja impressa dentro deste label;
Linhas 35 e 36
  • Nestas linhas criamos um botão, observe que seu type é type=”button” para que ele não submita a página, e ele ainda tem a tag onclick com uma função que irá chamar a validação dos campos. Dentro da função xajax_validaForm() passamos os valores dos campos nome e email.

validacoes.php

<?php
$ajax = new xajax();

// Registra as funções no javascript
$ajax->registerFunction("validaForm");

####################################################
#### FUNÇÕES JAVASCRIPT REGISTRADAS PELO XAJAX	####
####################################################

function validaForm($nome = false, $email = false){
	
	// Instancia o objeto XAJAX response com
	// codificação padrão ISO-8859-1
	$objResponse = new xajaxResponse('ISO-8859-1');
	
	// Inicializa a variável de resultado
	$res = "";
	
	// Verifica os campos e atribui strings a $res
	if($nome == false)
		$res .= "Preencha o campo nome<br />\n";
	if($email == false)
		$res .= "Preencha o campo e-mail\n";
	
	// Verifica $res
	if(empty($res))
		$res = "<font color=green>Formulário preenchido com sucesso!</font>";
	else
		$res = "<font color=red>".$res."</font>";
	
	// Atribui a variável $res ao label resultado
	$objResponse->assign('resultado', 'innerHTML', $res);
	
	// Retorna a resposta de XML gerada pelo
	// objeto do xajaxResponse
	return $objResponse;
}

// Manda o ajax processar os pedidos acima
$ajax->processRequest();
?>

Linha 2 – Instânciamos o objeto xajax();

Linha 5 – Registramos uma função, a qual podemos chama-lá com JavaScript (função chamada no botão do arquivo form.php). A única coisa que devemos observar é que sempre que formos chamar alguma função em nosso HTML sempre deveremos colocar “xajax_ ” antes do nome da função;

Linha 11 – Criamos a função validaForm() com os parametros $nome e $email;

Linha 15 – Instânciamos o objeto xajaxResponde() com parametro ‘ISO-8859-1’, para que não precisemos ficar utilizando as funções de codificação(utf8_encode() e utf8_decode()) de caracteres do PHP;

Linhas 18 a 31 – Aqui simplesmente checamos se os campos foram preenchidos e configuramos a resposta que será impressa na tela;

Linha 34 – De todas, a mais interessante. O método $objResponse->assign() tem 3 parametros, o 1º (‘resultado’) é o ID do objeto que ele irá atribuir os dados que serão especificados nos parametros 2º (como seré atribuido) e 3º parametro (o que será atribuido), em nosso exemplo a varável $res;

Linha 38 – O objeto $objResponse retorna com a resposta de tudo que lhe foi atribuido;

Linha 42 – Aqui o Ajax processa tudo e pronto!

Agora é só testar.

Muitos podem até dizer que é muito mais fácil fazer isso utilizando javascript ou mesmo vbscript, eu concordo, mais a ideia aqui é somente exemplificar o uso do metodo assign() e de muitos outros que iremos conhecer numa próxima vez.

Faça aqui o download do exemplo acima.

Obrigado a todos e boa semana.