Nesse artigo vou mostrar como usar AJAX com ASP. Não é muito comum (pelo menos por enquanto), porém muito útil. Passarei um exemplo bem simples onde, a partir dele, vocês podem começar a estudar mais a fundo AJAX. Vamos lá!
Crie uma página onde tenha um botão, por exemplo. Nesse botão, você chamará uma função chamada enviaPage(), para enviar os dados via GET, mas vocês podem usar qualquer outro tipo de função que acharem melhor. É que, no caso, eu utilizo funções diferentes para enviar dados via GET e via POST.
<input type="button" name="excluir" value="Excluir id 21" onclick="enviaPage('excluir.asp', 'GET', 'true', 'conteudo','action=excluir&id=21')">
A função que citei, enviaPage(), concatenará os parâmetros com a url e colocará um Math.random(), que evita que fique no cachê.
<script>
function enviaPage(url, metodo, modo, tagId, parametros)
{
goAjax( url+"?"+parametros+"&rnd"+ Math.random() , metodo, modo , tagId);
}
</script>
Agora, vem toda a função Ajax, que será responsável por tudo.
function goAjax(url, metodo, modo, tagRetorno, parametros) {
document.getElementById(tagRetorno).innerHTML='<div align="center" class="carregando"><img src="../images/carregando.gif"><br /><br />carregando...</div>'
if(metodo == "GET") {
xmlhttp.open("GET", url, modo);
} else {
xmlhttp.open("POST", url, modo);
xmlhttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=iso-8859-1");
xmlhttp.setRequestHeader("Cache-Control", "no-store, no-cache, must-revalidate");
xmlhttp.setRequestHeader("Cache-Control", "post-check=0, pre-check=0");
xmlhttp.setRequestHeader("Pragma", "no-cache");
}
xmlhttp.onreadystatechange = function() {
if(xmlhttp.readyState == 4) {
retorno=xmlhttp.responseText
document.getElementById(tagRetorno).innerHTML=retorno
findScript(retorno)
}
}
if(metodo == "GET") {
xmlhttp.send(null);
} else {
xmlhttp.send(parametros);
}
}
Vamos desenvolver a página asp, que realizará a exclusão dos registros, por exemplo. Veja que essa página é aquela que informa no botão, quando passo os parâmetros, enviando o retorno para a div que especifiquei no botão, que é o conteúdo.
<%
action = request("action")
id = request("id")
if action = 'excluir' then
'exclui id tal
ok = true
end if
response.write "<script>enviaPage('OK.asp', 'GET', 'true', 'mensagem','ok="& OK &" ');<script>"
%>
Percebam que o exemplo que passei é bem simples mesmo, como eu já tinha dito. E a partir disso, dá para vocês começarem a desfrutar e inventar mais coisa de ASP com AJAX. É uma forma de desenvolver sem recarregar determina página, e consome menos do servidor. Será muito utilizado futuramente. No próximo artigo, vou mostrar mais sobre como usar ASP com AJAX e sua utilização.
Viu como é fácil? Até o próximo artigo.
Cristiano Nascimento
Você poderia entrar mais em detalhes sobre este assunto, embora eu ache que ajax não passe muito disso mas derrepente eu esteja errado, parabéns pela matéria.
Paulo Ronaldo Vilela de Lima Jr
Concordo plenamente com o Cristino, apesar de começar a estudar agora o AJAX achei que a materia esta muito pouco detalhada e faltando trechos.
Para quem esta começando esta materia não ajuda muito.
Cezar Alves Lopes
Muito boa esta matéria.
Realmente, AJAX não passa muito disso.
Dá pra implementar melhor algumas coisas descritas aqui, mas tá muito boa. Parabéns pela interação do próprio portal com AJAX
Alan Daniel Weiss
bom ajax nao passa disto, mas existem coisas q tem q ser comentadas, como o Contet-type caso seja um .aps
os expires e talz
mas parabens ^^
otavio nogueira
Muito bueno o artigo, para se entender a raiz do funcionamento, porém hj em dia é muito mais fácil você utilizar um framework como ajaxbox.com.br ou script.aculo.us . mas ta bueno... valeus
Rai Rabelo
Não consegui colocar p funcionar, nesta parte mesmo do agora vem a função AJAX, onde coloco isso ?
Acredito que este artigo seja p quem queria iniciar, nao p quem ja conhece.
function goAjax(url, metodo, modo, tagRetorno, parametros) {
document.getElementById(tagRetorno).innerHTML='<div align="center" class="carregando"><img src="carregando.gif"><br /><br />carregando...</div>'
function createXMLHTTP()
{
try
{
ajax = new ActiveXObject("Microsoft.XMLHTTP");
}
catch(e)
{
try
{
ajax = new ActiveXObject("Msxml2.XMLHTTP");
alert(ajax);
}
catch(ex)
{
try
{
ajax = new XMLHttpRequest();
}
catch(exc)
{
alert("Esse browser não tem recursos para uso do Ajax");
ajax = null;
}
}
return ajax;
}
var arrSignatures = ["MSXML2.XMLHTTP.5.0", "MSXML2.XMLHTTP.4.0",
"MSXML2.XMLHTTP.3.0", "MSXML2.XMLHTTP",
"Microsoft.XMLHTTP"];
for (var i=0; i < arrSignatures.length; i++) {
try { var oRequest = new ActiveXObject(arrSignatures[i]);
return oRequest;
} catch (oError) {
}
}
throw new Error("MSXML is not installed on your system.");
}
var xmlhttp = createXMLHTTP();
if(metodo == "GET") {
xmlhttp.open("GET", url, modo);
} else {
xmlhttp.open("POST", url, modo);
xmlhttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=iso-8859-1");
xmlhttp.setRequestHeader("Cache-Control", "no-store, no-cache, must-revalidate");
xmlhttp.setRequestHeader("Cache-Control", "post-check=0, pre-check=0");
xmlhttp.setRequestHeader("Pragma", "no-cache");
}
xmlhttp.onreadystatechange = function() {
if(xmlhttp.readyState == 4) {
retorno=xmlhttp.responseText
/*var element = getObj(tagRetorno) */
document.getElementById(tagRetorno).innerHTML=retorno
findScript(retorno)
}
}
if(metodo == "GET") {
xmlhttp.send(null);
} else {
xmlhttp.send(parametros);
}
}
Lásaro Carvalho
Acredito que um passo a passo seria mais interessante para os leigos.
No exemplo acima fiquei perdido não sei que script vai em que página.
Carlos Augusto Nery Jr
muito interessante o script que preenche 3 combos usando ajax com asp, entretanto, qdo selecionamos o estado, especialmente o espírito santo que tem duas cidades, o combo de cidade funciona perfeitamente desde qdo não tenham dois imóveis cadastrados para a mesma cidade, o que nos faz ver que o combo de cidade está listando a tabela de imóveis e não de cidade já que a cidade se repete quantas vezes hajam imóveis cadastrados para ela.
Carlos Augusto
2001 - iMasters FFPA Informática Ltda - Todos os direitos reservados.