Sexta-feira, 26 de maio de 2006 às 11h33

AJAX com ASP

Faltam -1 dias! Inscreva-se agora! O maior encontro de profissionais web da américa latina.

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.

10 comentários

 Cristiano Nascimento
29/05/2006 09h14

Bem legal...

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
30/05/2006 01h08

Materia Mal detalhada

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.

 Patrique Andre
02/06/2006 11h50

Muito boa

Continue assim!

Matéria muito boa!

 Cezar Alves Lopes
15/06/2006 11h17

Esclarecedor

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
13/07/2006 09h12

Bem limitada

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
24/01/2007 08h16

Bueno

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
25/01/2008 11h43

Nao consegui utilizar

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.

Pra quem nao conseguiu fazer funcionar

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
29/05/2009 20h09

AJAX passo a passo

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
28/10/2009 09h32

Bug

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

Cancelar resposta

Qual a sua opinião?

Faça login abaixo ou cadastre-se rapidamente.


Patrocínio:
Sobre o Autor
Rafael Martin possui experiência em desenvolvimento de sistemas web e softwares, principalmente nas linguagem ASP, VB6, Javascript, CSS, XML, HTML, DHTML e ASP.Net (VB.Net e C#), Crystal Reports; banco de SQL Server, MySQL e Access.
InterCon 2009

2001 - iMasters FFPA Informática Ltda - Todos os direitos reservados.