Como usar o xAjax para chamadas assíncronas no TelEduc

1.1.1. Dar Include na biblioteca xajax:

No arquivo php :

require_once("xajax_core/xajax.inc.php");

Exemplo do Teleduc:

No arquivo: cursos>aplic>perguntas>perguntas.php

require_once("../xajax_0.5/xajax_core/xajax.inc.php");

1.1.2. Instancie um objeto xajax:

No arquivo php :

$xajax = new xajax();

Exemplo do Teleduc:

No arquivo: cursos>aplic>perguntas>perguntas.php

$objAjax = new xajax();

1.1.3.Configurar o caminho dos arquivos javascript, e outras configurações opcionais:

No arquivo php :

$xajax->configure('javascript URI', "/lib/xajax");

Exemplo do Teleduc:

No arquivo: cursos>aplic>perguntas>perguntas.php

$objAjax->setFlag("decodeUTF8Input",true);
$objAjax->configure('javascript URI', "../xajax_0.5");
$objAjax->configure('errorHandler', true);

1.1.4.Registrar os nomes das funções em php que poderão serem chamadas pelo xajax:

No arquivo php :

 $xajax->register(XAJAX_FUNCTION,'myFunction');

Exemplo do Teleduc:

No arquivo: cursos>aplic>perguntas>perguntas.php

$objAjax->registerFunction("EditarTexto");

1.1.5.Escreva as funções em php que você registrou e utilize o objeto xajaxResponse para retornar comandos em XML:

No arquivo php :

function myFunction($arg)

{

// do some stuff based on $arg like query data from a database and

// put it into a variable like $newContent

$newContent = "Value of $arg: ".$arg;

// Instantiate the xajaxResponse object

$objResponse = new xajaxResponse();

// add a command to the response to assign the innerHTML attribute of

// the element with id="SomeElementId" to whatever the new content is

$objResponse->assign("SomeElementId","innerHTML", $newContent);

//return the xajaxResponse object

return $objResponse;

}

Exemplo do Teleduc:

No arquivo: cursos>aplic>perguntas>perguntas.inc

function EditarTexto($tabela, $cod_curso, $cod_item, $novo_nome, $cod_usuario)

{

$objResponse = new xajaxResponse();

$novo_nome=ConverteAspas2BarraAspas($novo_nome);

$sock=Conectar($cod_curso);

$consulta="update ".$tabela."_itens set resposta='".trim($novo_nome)."' where cod_pergunta=".$cod_item;

$res=Enviar($sock, $consulta);

// Atualiza Ferramentas_nova 

AtualizaFerramentasNova($sock, 6, 'T'); 

Desconectar($sock);

$objResponse->assign("text_".$cod_item, "innerHTML", print_r(AjustaParagrafo(ConverteBarraAspas2Aspas($novo_nome)), true));

// Retorna a resposta de XML gerada pelo objeto do xajaxResponse

return $objResponse;

}

1.1.6. Antes que o código envie alguma saída, deixe o xajax manipular os requisitos:

No arquivo php :

$xajax->processRequest();

Exemplo do Teleduc:

No arquivo: cursos>aplic>perguntas>perguntas.php

require_once("../xajax_0.5/xajax_core/xajax.inc.php");

$objAjax = new xajax();
$objAjax->configure("characterEncoding", 'ISO-8859-1');
$objAjax->setFlag("decodeUTF8Input",true);
$objAjax->configure('javascript URI', "../xajax_0.5");
$objAjax->configure('errorHandler', true);
$objAjax->register(XAJAX_FUNCTION,"EditarTexto");

$objAjax->processRequest();

1.1.7.Entre suas tags, chame o xajax para gerar o JavaScript necessário:

No arquivo php :

<?php $xajax->printJavascript(); ?>

Exemplo do Teleduc:

No arquivo: cursos>aplic>perguntas>perguntas.php

$objAjax->printJavascript();

1.1.8. Chame a função por evento do JavaScript ou uma função em sua aplicação:

No arquivo html:

<div id="SomeElementId"></div>

<button onclick="xajax_myFunction('It worked!');">


Exemplo do Teleduc:

No arquivo: cursos>aplic>perguntas>perguntas.php

echo(" function EdicaoTexto(codigo, id, valor){\n");

echo("          eval('var conteudo = CKEDITOR.instances.'+id+'_text'+'.getData();');"); 

echo(" if (valor=='ok'){\n");

echo(" conteudo=document.getElementById(id+'_text').contentWindow.document.body.innerHTML;\n");

echo(" xajax_EditarTexto('".$tabela."', ".$cod_curso.", codigo, conteudo, ".$cod_usuario.");\n");

echo(" mostraFeedback('".htmlentities(RetornaFraseDaLista($lista_frases, 23))."', true)\n");

echo(" }\n");

echo("          document.getElementById(id).innerHTML=conteudo;\n"); 

echo("      }\n\n"); 

Nesse caso a função php é chamada pelo JavaScript(pela função EdicaoTexto).

Usamos o xajax pois ele facilita muito a navegação pelo site. Não é necessário passar os parâmetros diretamente por php, o xajax possibilita chamar funções em php em tempo real, a página inteira seria recarregada se não fosse utilizado o xajax. O ajax proporciona essa facilidade.

Baseado em:

Mais sobre o xajax em:
Site oficial: http://www.xajax-project.org/
Forum oficial: http://www.xajax-project.org/en/community-forums/
Comunidade orkut: http://www.orkut.com/Community.aspx?cmm=7094828
Repositório no github: https://github.com/Xajax/Xajax/tree/master/xajax_js