No Tutorial Rapido de Ajax que eu escrevi eu comentei que os codigos Javascript nao sao validados ao serem escritos na pagina. Mas, e logico, que sempre queremos valida-los. Entao hoje eu vou apresentar uma solucao para isso. 1:/** 2:* Realiza uma requisicao AJAX e processa a resposta. 3:* @param string URL URL do script que ira processar a requisicao. 4:* @param string param Variaveis enviadas. Exemplo: "nome=joao&senha=123456". 5:* @param string IDResposta ID do elemento onde a resposta sera escrita. 6:* @author Daniel Castro Machado <daniel@cdt.unb.br> 7:*/ 8:function requisita(URL, param, IDResposta) { 9: requisicao.open("POST", URL, true);10: requisicao.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');11: requisicao.send(param);12: requisicao.onreadystatechange = function() {13: var campoResposta = document.getElementById(IDResposta);14: switch (requisicao.readyState) {15: case 2:16: campoResposta.innerHTML = 'Carregando, aguarde...';17: break;18: case 4:19: if (requisicao.status == 200) {20: campoResposta.innerHTML = requisicao.responseText;21: var arScripts = campoResposta.getElementsByTagName("script");22: var scriptTotal = document.createElement("script");23: for (scriptParcial in arScripts) scriptTotal.text += scriptParcial.innerHTML;24: document.body.appendChild(scriptTotal);25: } else {26: campoResposta.innerHTML = "Erro na resposta do servidor";27: }28: break;29: }30: }31:}A funcao requisita() pode ser um funcao generica para tratamento de requisicoes Ajax. Ela exige como parametros a URL, as variaveis URL e o ID do elemento onde sera escrita a resposta. Esta funcao faz o papel, por exemplo, do window.open() nas requisicoes tradicionais.O que ela faz e:Envia a requisicao.Ao receber uma resposta OK (status 200), escreve o codigo HTML em um area da pagina chamada areaResposta. Este codigo contem nenhum, um ou varios scripts (que infelizmente nao sao validados por padrao).Entao recupera todos estes scripts atraves de DOM.Depois, para cada script desses, recupera seu conteudo.Em um novo elemento de script e inserido estes conteudos.Depois insere o script na pagina com appendChild().Em outras palavras, para voce usar o Ajax, basta instanciar o objeto XMLHttpRequest e usar a funcao requisita() para fazer as requisicoes. Nunca foi tao facil usar Ajax. Nem mesmo e preciso entender de Ajax. Basta usar os codigos postados aqui e nao sera mais preciso se preocupar com os detalhes sujos de implementacao.P.S.: A solucao alternativa seria usar eval() - como ja foi dito no post anterior. Mas, neste caso, percebeu-se que as funcoes nao foram validadas corretamente. Eu andei procurando na Internet como calcular diferenca entre datas em Javascript ou, mais especificamente, como fazer o calculo de dias entre duas datas. Pra variar, eu so achei solucoes exdruxulas. Entao, como sempre, e melhor a gente fazer o nosso proprio codigo. Segue abaixo:15:var a = new Date(2008, 8, 3);16:var b = new Date(2008, 8, 15);17:var c = b.getTime() - a.getTime();18:var d = c / (24 * 60 * 60 * 24 * 1000); 19:// 1 dia em milisegundos é 24 horas * 60 minutos * 60 segundo * 1000 milisegundosClaro, se quiser achar a quantidade de horas, basta mudar o denominador do ultimo calculo para (60 * 60 * 1000), ou seja, 1 hora = (60 minutos * 60 segundos * 1000) milisegundos. E por ai vai. Hoje eu vou comecar uma serie onde eu vou postar dicas de Javascript que podem salvar em momentos de apuro.1. Como converter um float para inteiro sem arredondamento.E facil. Bastar usar a notacao:1:var real = 1234.56;2:var inteiro