Al�m da fila de requisi��es, h� algo mais que podemos fazer para otimizar nosso trabalho e que pode ser reaproveitado em v�rios projetos, que � escrever um m�todo gen�rico para obter HTML do servidor (algo muito comum trabalhando com Ajax.)
Naturalmente voc� pode fazer mais do que isso com Ajax, ent�o h� espa�o aberto para criar, por exemplo, uma fun��o para executar javascript vindo do servidor e outra que preencha um select (e n�o consigo pensar em mais nada...)
Nossa id�ia � ter uma fun��o ajaxHTML, que recebe dois atributos: o id de um elemento HTML e assim:
function ajaxHTML(id,url){ //Obt�m o objeto HTML objetoHTML=document.getElementById(id) //Exibe "Carregando..." objetoHTML.innerHTML="<span class='carregando'>"+ "Carregando...</span>" //Abre a conex�o xmlhttp.open("GET",url); //Fun��o para tratamento do retorno xmlhttp.onreadystatechange=function() { if (xmlhttp.readyState==4){ //Mostra o HTML recebido retorno=unescape(xmlhttp.responseText.replace(/\+/g," ")) objetoHTML.innerHTML=retorno } } //Executa xmlhttp.send(null) }
Assim voc� pode chamar ajaxHTML("conteudo","funcoes.php?n=1")
e a fun��o vai se encarregar de exibir "Carregando..." no div "conteudo", fazer a requisi��o e atualizar o conte�do do div quando receber o c�digo. Isto segue aquela premissa do primeiro artigo de que usando a mesma fun��o no servidor para o Ajax e para a aplica��o sem javascript � muito mais f�cil fazer sua aplica��o degradar bonito (ou seja, funcionar bem sem javascript.)
Voc� vai notar que no funcoes.php, al�m da nova fun��o de t�tulo, escrevemos apenas o trecho:
if(isset($_GET["h"])){ $t=titulo(intval($_GET["h"])); echo(urlencode($t)); }
Ou seja, se passarmos o par�metro h vamos ter como retorno o t�tulo da p�gina. Voc� vai se lembrar que j� hav�amos constru�do o c�digo, no primeiro artigo, para que ao receber o par�metro n obtenhamos o conte�do da p�gina. Agora s� falta a fila de conex�es.