canadian pharm viagra certified buy levitra without a prescription cialis 5mg generic levitra usat cialis acomplia for sale buy canadian pharmacy buy acomplia without prescription usat non prescription viagra cheap buy levitra without prescription cheapest pills on the net acomplia without a prescription gernic viagra sales 1 online pharmacy fast canadian pharmacy viagra buy usat buy acomplia online without prescription cheap can you get viagra without prescription online acomplia no prescription cialis without prescription fast buy illegal viagra canada buy discount propecia sales cialis canadian sales cialis in canada buy meds sales canadian generic viagra online sales canadian levitra fast delivery levitra price discounts levitra online canada online levitra without a prescription cheapest viagra certified cheap viagra from canada certified cialis canada pharmacy online delivery cialiscanada buy discount levitra fast buy cialis usa cheap buy cialis without prescription cost of cialis buy acomplia no prescription delivery canadian cialis no prescription buy viagra online get viagra sales generic daily cialis canadian viagra do you need a prescription for viagra online pharmacies china cheap cialis canadian cilias how much is propecia fast canada viagra fast cialis from canada buy best viagra online cost cialis daily daily cialis online fast buy viagra without prescription discounts how much does cialis cost delivery brand cialis canadian buying acomplia levitra online cheap levitra 20mg can i buy viagra without prescription online cialis online buying viagra usat how much does levitra cost cheap cheap viagra canada delivery canadian+viagra fast buying viagra from canada sale canadian pharmacies cialis for sale canadian pharmacy levitra canadian levitra without prescription buy viagra online cialis without perscribtion certified canadian pharmacy scam buy propecia online no prescription cheap generic propecia india fast buy cialis fast can i buy viagra without prescription online cheap canadian pharmacy fof cialis fast canada cialis cialis generic canadian natural viagra cialis cheap buy propecia online female viagra do you need a prescription for viagra in canada daily levitra generic viagra canada canadian medstore cialis on sale sale levitra next day cialisis on line discount cialis canadian levitra 5mg buy levitra online usat cialis online sales discounts canada online pharmacy discounts canada viagra no prescription delivery cheap viagra no prescription delivery get propecia generic viagra online discounts cialis canadian pharmacy sale cialis price non prescription ultracet cilias canada cialis suppliers online acomplia without prescription buy discount viagra buy how much does cialis cost sales cialic canada generic cialis daily canadian canadian pharmacy viagra scam sale cialis canada online pharmacy sale cialis by mail cialis cost canadian pharmacy viagra sale cialis generic buying real viagra online certified canadian levitra suppliers buy 50mg viagra sale buy propecia without a prescription cheap viagra canadian cialis 20mg dicount levitra china online pharmacies levitra for sale canada pharm usat canadapharmacyonline buy cialis pills buy buying viagra in canada discounts med store canada sale buy propecia without prescription cialis one a day certified cialis on the spot generic for cialis cheap best price on generic propecia cheap buy viagra no prescription once daily cialis buy viagra usa canadian pharmacy cialis fast cialis no prescription canada sale how fast does viagra work how to get viagra without prescription cheap propecia without perscription discounts buy viagra online no prescription delivery no prescription online pharmacy discounts buy cialis online certified cialis prescription cialis one day cost for daily cialis do you need a prescription to get viagra canadian canadian drug store propecia certified how do you get viagra mexico pharmacy abilify can i buy propecia without a prescription delivery canada pharmacy brand cialis cheap buy acomplia genericpropecia cheap how do i get viagra buy real viagra online daily cialis cost levitra daily use canadian one a day cealis levitra cost sale buy 5mg propecia bay propecia cialis canada online certified generic levitra usa day cialis canadian needs a prescription in us usat cialis 100mg discounts levitra daily indian viagra online can you get viagra without a prescription canadians buy viagra from usa canadian levitra canada canadian pharm meds sale canadapharm certified cialis order cheap viagra pills cialis in a day buy canadian levitra buy propecia no prescription certified generic cialis no rx cialis sales generic cialis from india cialis from india cialis substitute buy real viagra online online fast online rx fast cialis online cheapest cheap canadian canadian pharmacy no prescription fast canada pharmacy cialis discounts india online pharmacy canadian pharmacy fast delivery discounts accomplia no prescription discounts canada propecia certified cost of propecia in canada buy how much does propecia cost how to get real viagra gel viagra levitra canadian pharmacy canadian pharm buy cialisis sales buy viagra online without prescription generic levitra master card sale levitra 100mg get viagra without prescription usat get viagra without a prescription canadian viagra cheap canada pharmacy delivery cheap viagra for sale female viagra pills online no 1 online viagra sale getting viagra without prescription fast acomplia online cialis online no rx one a day cialis levitra canadian how to get viagra usat cheap viagra in canada generic viagra india viagra certified canadan viagra canada based pharmacy without a prescription indian viagra get prescription to propecia delivery med store buy cheapest viagra without prescription canadian cialis discounts online ciali s sale cialis canada how much is cialis generic propecia canadian acomplia usa canadian levitra sales buy can i buy viagra online sale canadian pharmacies lavitra canada viagra generic delivery cost of cialis daily usat how to get viagra without a prescription delivery online canadian cialis 50mg get cialis online cheap acomplia does it work how do i get viagra without a prescription online canadian propecia delivery buy viagra online in canada cheap online levitra sales online cialis usa delivery cialis daily generic sales can i buy viagra without a prescription cost of daily cialis usat cialis 5mg price canadian pharmacies no prescription generic levitra online 20mg levitra canadian pharmacy online how much does propecia cost canadian one a day cielas cheap soft cialis usat cialis online india cialis daily cheap cialis no prescription daily cialis cost of propecia cheap canadian rx cialis 1 a day gereric cialis generic cialis buy canada pharmacy cialis online cialis without a prescription delivery cialis daily cost cialis order cialis daily price how much is levitra fast canadian viagra professional do you need prescription for viagra cialis soft tabs canadianpharmacy mexico pharmacy sale brand levitra for sale delivery inexpensive viagra levitra canada pharmacy buy cialis daily online buy once daily cialis cost sales

GUJS

O Maior Fórum Javascript do Brasil

Tutorial básico sobre Ajax

Asynchronous Javascript and XML, mais conhecido como AJAX.

O que é Ajax?
Ajax foi criado com o principio de ser uma maneira rápida e otimizada de podermos fazer requisições WEB, sendo esta totalmente transparente ao usuário.

Sabemos que todo o tipo de acesso a dados de um servidor de sites na internet, roda encima de requisições WEB(Requisições via Protocolo HTTP ao servidor de destino), e por resposta o servidor também com o mesmo protocolo retorna os dados solicitados, tais como HTML’s.

Este processo normalmente não é notado na visão do usuário, mas é isso que acontece quando digitamos em nosso navegador de internet um endereço da WEB.O ajax por sua vez também roda encima desta lógica.

Mas e afinal, para que usamos o Ajax?

Hoje esta tecnologia é utilizada para uma infinidade de processos, mas o que precisamos saber não é o que fazer com ele, mas sim saber como ele trabalha para podermos adequar tal tecnologia em nosso dia-a-dia.
Um Exemplo Básico da utilização de ajax, é um refresh de página, sem que o usuário necessite faze-lo.

O programador que cria a página, programa uma requisição ajax, para que busque novos dados no servidor em um limite de tempo, e então também por javascript, altera a visualização do usuário, talvez inserindo linhas em uma tabela ou algo do gênero, assim dando um aspecto de atualização automática.

Como Utilizar?

Hoje, o ajax é suportado pelos principais browsers disponíveis no mercado, e utilizados pela comunidade WEB.

Para isso utilizados objetos javascript, que rodam encima do browser do usuário e transitam dados por estas requisições.

Assim sendo, podemos fazer interações com processos de servidor, sem que seja necessário por exemplo recarregar a página do usuário, ou mesmo se quer visualize tal iteração.

Vejamos um exemplo básico.

//variavel ajax
var ajax = null;

//função que faz a requisição ajax
function requisicaoAjax(){
    //utilizado para requisições no browser Internet Explorer
    if (window.ActiveXObject) ajax = new ActiveXObject('Microsoft.XMLHTTP');
    //utilizado como o padrão javascript para requisições AJAX.
    else if (window.XMLHttpRequest) ajax = new XMLHttpRequest();
    //se a variável ajax for nula, logo o browser não suporta tal tecnologia
    if(ajax != null){
      //abre a requisição ajax, passando o método de acesso, a url solicitada e o parâmetro sobre sincronia
      ajax.open('GET','http://gujs.com.br/',false);
      //seta a funcao que sera chamada quando o ajax for retornado
      ajax.onreadystatechange = statusAjax;
      //inicia o tranporte
      ajax.send(null);
    }
}

//função que trata o retorno ajax
function statusAjax(){
  //caso o status do ajax esteja ok, então chama a função retornoAjax enviando o retorno da requisição como parâmetro
  if(ajax.readyState == 4 && ajax.status == 200){
    retornoAjax(ajax.responseText);
  }
}

//função que é chamada quando o ajax for retornado
function retornoAjax(response){
  //dá um alerta no texto de retorno
  alert(response);
}
requisicaoAjax();

1º) Criamos um objeto para o transporte do ajax;

2º) Setamos ao objeto as diretivas da solicitação como a url a ser solicitado e o método. O terceiro parâmetro é se deve ser assíncrono ou não, no caso estamos passando false, para o javascript aguardar o retorno da requisição.

3º) Indicamos qual será a função que ira fazer o tratamento de estados da requisição. (O status da requisição é retornado pelo browser para tratamento a cada vez que este status muda).
Você pode ver a listagem completa de status aqui: http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html

Quando dizemos

ajax.onreadystatechange = statusAjax;

Estamos indicando que toda a vez que este ajax mudar de status, ele deve chamar esta função.

No nosso caso, o único status interessante é o status de requisição ok.

Se a requisição retornar um status ok, então a partir daí trabalharemos em nosso refresh, como dito acima, onde trataríamos os dados retornados e aplicaríamos na visualização do usuário;

Uma coisa que devemos considerar e que por sua vez é de grande importância, é que não podemos fazer requisições Ajax a outro domínio diferente ao que o site atual roda.
Por exemplo:
Sendo que minha página exemplo_ajax.htm estivesse dentro de http://www.gujs.com.br/, só poderei fazer requisições ajax para arquivos que fiquem dentro de http://www.gujs.com.br/.

Este exemplo é bem simples, mas apenas para podermos ter uma noção de como funciona uma requisição ajax.

Existem hoje, várias bibliotecas javascript para formalizar tais requisições, bibliotecas que fazem o controle de estados inválidos da requisição, ou mesmo que facilitam o transporte de requisições via método POST.

O intuito deste artigo é simplesmente desmistificar este fênomeno chamado ajax.

Fique a vontade para deixarem comentários, ou entrar em contato ok?

Até a próxima pessoal;

21 Comentários para “Tutorial básico sobre Ajax”

  1. Paulo Says:

    O código não funcionou no Firefox 2.0.0.3, só no IE.
    A partir da linha
    ajax.open(‘GET’,'http://gujs.com.br/’,false);
    não acontece mais nada no Firefox.

  2. Eduardo Bohrer Says:

    Olá Paulo, obrigado pelo comentário;
    O seu problema é que o firefox não autoriza requisições ajax, quando rodamos o código em máquina local, rodando em arquivos locais.

    Se quiseres testar no firefox, você pode hospedar o código em algum servidor http e acessar via servidor.
    ok?

    Até mais…

  3. Paulo Says:

    Continua não funcionando:
    http://paulodeleo.googlepages.com/ajax.htm

  4. Eduardo Bohrer Says:

    Oi Paulo;
    O caso é que de acordo com a especificação do Ajax, não é possível fazermos requisições ajax para fora do domínio atual. Ou seja, se tu requisitares uma pagina dentro de http://paulodeleo.googlepages.com/ funcionará normalmente.

    OK?
    Estarei colocando uma observação do POST para que não fique tal questão em aberto.
    Muito obrigado pelo auxilio.

  5. Richard Says:

    Aqui funciona perfeitamente.
    Parabéns pelo tutorial.

  6. Andre Says:

    Parabens pelo artigo, mto bom

    Executa perfeitamente !

    So tenho uma dúvida, no metodo:
    function retornoAjax(response){

    }

    Quando eu tento recuperar um valor do meu arquivo xml gerado via codigo java, apresenta um erro, eu fiz isso.
    //arquivo.js
    var data = response.getElementsByTagName(“dados”);

    Sendo que o dados que eu estou querendo recuperar seguindo essa arvore.

    TESTE

    O erro que apresenta é que o nao é suportado pelo metodo ou propriedade.

    Como eu posso resolver isso ??

    Valew

  7. Luis Eduardo Bohrer da Silva Says:

    Respondido no fórum do GUJS.
    http://gujs.com.br/forum/viewtopic.php?t=463
    Até mais.

  8. Gui Hermeto Says:

    Oi pessoal,

    só gostaria de dizer que esxistem algumas maneiras de burlar a segurança do Firefox para fazer requisição AJAX fora do domínio. Uma delas é criar uma página no seu servidor que busque a página na web para você.

    Criei um texto sobre isso, mostrando como fazê-lo usando JSP. Se ainda precisarem, dêem uma olhada lá:

    http://javaescript.blogspot.com/2007/07/como-realizar-requisies-ajax-fora-do.html

    Espero que isso ajude. Funciona bem pra mim.

  9. hide2system Says:

    O erro neste scritp está na linha

    var ajax = null;

    retirem que funciona.
    e também no

    ajax.open(‘GET’,'http://gujs.com.br/’,false);

    retirem o false, usem: ajax.open(‘GET’,'URL’); no lugar da URL coloquem o endereço que querem abrir, no caso http://gujs.com.br/.

    Até mais…
    Hide2System

  10. jair humberto Says:

    Eu entendi o código, mas não sei porque não funcionou.
    eu copiei o código, modificando apenas o endereço
    ajax.open(‘GET’,'http://gujs.com.br/’,false);
    por
    ajax.open(‘GET’,'http://localhost/teste’,false);
    no entanto, no ie6 funciona, porém no firefox não.

  11. dacio braga Says:

    No meu firefox 2.0.0.6 deu certo, mas tive que mudar para
    ajax.open(‘GET’.'URL’,true) ou ajax.open(‘GET’.'URL’)

  12. Alan Says:

    Muito bom esse tutorial, gostei mesmo… Alan

  13. Alfredo Says:

    Olá !

    Já tentei de várias formas mas não funciona a requisição no IE 6.0, simplesmente não acontece nada.

    var Ajax = openAjax();
    Ajax.open(“GET”,”pagina02.php”,true);
    Ajax.onreadystatechange = function

    e esta tudo no mesmo domínio.

  14. Luis Eduardo Bohrer da Silva Says:

    Oi Alfredo.
    Poste no fórum do GUJS sua dúvida e seu código para podermos analisa-lo.

    Obrigado.

  15. Orlando N Says:

    Parabens …

    Obrigado por dividir com nosco seu conhecimento…. ATé

  16. Tauser Says:

    Bom parabens pelo tuto ficou legal.
    Galera quanto ao problema que está acontecendo é que open(“GET”,url,false); passando isso estamos passando um metodo sincrono , o que realmente da pau no firefox , trocando o false para true esta passando para um metodo assincrono . o que podemos tentar fazer é , open(“GET”,url,’false’); colocar aspas no false.

    Espero ter ajudado XD.

  17. Daniel Says:

    Queria saber de ajax somente o seguinte:
    por um certo tempo(5 segundos) aparecer alguma coisa, e dps desse tempo desaparecer.
    Se alguem souber como fazê-lo. favor comentar aqui ou entrar no meu blog em contato ;D

  18. Luis Eduardo Bohrer da Silva Says:

    Oi Daniel;
    Neste caso não seria propriamente o AJAX que iria resolver seu problema.
    Você precisa é agendar um evento para fazer o conteúdo desaparecer.

    Utilize a funcao setTimeout para agendar um evento, ou setInterval no caso de repetidos eventos a cada intervalo.
    Segue uma referência: http://www.w3schools.com/js/js_timing.asp

    Para dúvidas, poste no fórum que poderemos te dar melhor apoio.
    Até mais;

  19. Marcelo Coelho Says:

    Estou tendo problemas com AJAX na função ’status’ quando utilizo o Firefox.
    A instrução ‘if (ajax.status == 200)’ não é identificada.
    Já tentei ‘if (ajax.responseXML)’, mas não funciona também.
    No IE funciona corretamente.
    Alguém sabe uma solução para isso?

  20. Eduardo Bohrer Says:

    O problema ai não deve ser status nem responseXML, talvez o objeto ajax esteja nulo.

    Você seguiu o exemplo acima para a criação do port Ajax ?
    Se notar, ali existe um IF para verificar se utiliza ActiveXObject (para IE) ou XmlHTTPRequest(code compliant).

    Se tiver mais dúvidas, poste no fórum do GUJS para podermos discutir melhor.
    http://gujs.com.br/forum/

    Até mais.

  21. William Says:

    Olá, gostaria de saber porque quando eu tento abrir uma página em php para que ela me retorne um valor utilizando o método open(), ele dá um erro que diz acesso negado?

Comentários

©2010 GUJS. Todos os direitos reservados.