Introduza o termo a pesquisar e clique Enter.

Duvida sobre AJAX

Mai 08 27

Escrito por Luis Nabais @ 27/05/08 18:05 | 16 Comentários »

Ok tenho uma dúvida um pouco grande: se uma pessoa dá numa de GMail e afins e decide usar o poder do Ajax para ir carregando a informação como é que lidamos com a barra de endereço? Eu bem sei que esta pergunta pode parecer um pouco ignorante mas a verdade é que eu sou ainda um ignorante nisto do AJAX.

Colocando um aspecto mais prático na minha questão: eu estou a desenvolver um pequeno script php que lista todas as subpastas de um directório do servidor que contenham um ficheiro ini para mostrar os meus diversos sites (é para actualizar o meu portefólio) e estou a ponderar usar este projecto para desenvolver os meus conhecimentos de Javascript e AJAX.

A grande questão que tenho é a seguinte: se eu usar o AJAX para carregar as informações e ir mudando as páginas como é que lido com a barra de endereço? Se alguém me puder ajudar nisto eu agradecia imenso porque ainda não entendo muito bem como é que se processam as interacções cliente-servidor nisto do AJAX.

PS: Peço desculpas por todo e qualquer palavreado caro que tenha usado incorrectamente.

pub:

16 Comentários

  1. Sérgio Serra

    27 de Maio de 2008 ás 19:57

    a utilizar Mozilla Firefox 2.0.0.14 em Ubuntu Linux

    Também não tenho muita experiência mas creio que deves usar o XMLHttpRequest.readyState e baseado nisso alterares a barra de estado.

  2. Ricardo Moreira de Carvalho

    27 de Maio de 2008 ás 21:25

    a utilizar Mozilla Firefox 2.0.0.3 em Mac OS

    Olá Luís,
    O AJAX não é mais do que JavaScript que usa um objecto chamado XMLHTTPRequest para realizar a “troca” de informação com o servidor, sem necessidade de carregamento da página. O formato dos dados pode estar definido em XML (daí o nome), mas podes usar alternativas, como o JSON (podes Googlar por isso).

    Não percebi bem a tua dúvida relativa à barra de endereço..

    Abraços.

  3. Dextro

    27 de Maio de 2008 ás 21:28

    a utilizar Mozilla Firefox 3.0 em Windows XP

    A minha duvida prende-se com aquilo que o André Luís linkou: o funcionamento do Back e dos bookmarks quando criamos uma aplicação totalmente em AJAX (ou JSON, tanto faz).

  4. Hugo Fernandes

    27 de Maio de 2008 ás 21:33

    a utilizar Safari 525.18 em Mac OS X 10.4.11

    É exactamente o mesmo problema do Flash. E para resolvê-lo, voilá: SWFAddress.

    Podes ver aqui um exemplo simples da integração do SWFAdress com Ajax.

    O “segredo” é o uso do cardinal para alterar a barra de endereço sem fazer um reload da página, tal qual uma âncora.

    Sobre Ajax não te posso falar muito, não é a minha área, mas em relação ao Flash/Actionscript o funcionamento é bastante simples. Basicamente a classe de Actionscript, com a ajuda de Javacript, “lê” o URL para além do cardinal.

    Para Flash é sem dúvida a melhor solução.

  5. André Luís

    27 de Maio de 2008 ás 21:44

    a utilizar Mozilla Firefox 2.0.0.14 em Mac OS

    Hugo, a solução para Javascript também passa por aí. Aliás, os browsers são os mesmos em ambos os casos 🙂 teria de ser uma solução similar.

    Luís, já agora aproveito… podes usar esta questão do histórico sem usares uma ponta de Ajax. Pondera bem se precisas de carregar conteúdo on-demand ou se podes carregá-lo logo no 1o pedido.

    Não uses Ajax só porque sim, ok? Uma boa interface responsiva é bem melhor do que uma cheia de efeitos mas lenta. 😉

  6. Dextro

    27 de Maio de 2008 ás 21:47

    a utilizar Mozilla Firefox 3.0 em Windows XP

    Isto é tudo para eu experimentar e aprender um pouco sobre estas tecnologias. Se no fim ficar com um site porreiro todo modernaço ainda melhor (eu já tenho um backend php + layout prontos).

  7. Sérgio Serra

    27 de Maio de 2008 ás 23:11

    a utilizar Mozilla Firefox 2.0.0.14 em Ubuntu Linux

    Como é óbvio eu estava a dormir e troquei as barras… 😀

    Ao receber os outros comments é que me apercebi. Sorry.

  8. Dextro

    28 de Maio de 2008 ás 16:25

    a utilizar Mozilla Firefox 3.0 em Windows XP

    @André Luís: nem me lembrei disso mas é exactamente aquilo que eu quero fazer: algo que degrade bem e que mesmo assim tenha os efeitos tão habituais da chamada “web 2.0” (o carregamento sem mudar a pagina, os efeitos visuais, etc…)

  9. Um Português

    29 de Maio de 2008 ás 08:41

    a utilizar Opera 9.50 em Linux

    “responsiva”?? “degrade”?? o “acôrdo” ortográfico já chegou? mais que “degrade”, chega a ser degradante…

  10. Dextro

    29 de Maio de 2008 ás 08:46

    a utilizar Mozilla Firefox 3.0 em Linux

    Oh meu amigo “Um Português”, eu até sou contra o acordo ortográfico mas, quando estamos a falar de termos informáticos, onde está o mal em usar as palavras “responsiva” e “degrade”? Gíria profissional conhece?

    PS: E a cobardia também não é bonita.

  11. andrezero

    30 de Maio de 2008 ás 21:17

    a utilizar Mozilla Firefox 2.0.0.14 em Windows Vista

    já tens aqui bastante matéria para te iniciar mas gostava de acrescentar algumas dicas que podem ser úteis, principalmente relativamente à estrutura da tua aplicação

    o ideal é o teu backend isolar o tratamento dos requests (vulgo actions numa arquitectura MVC) por forma a poder servir qualquer (todo e qualquer) conteúdo ou tratar qualquer post (todo e qualquer post) da mesma forma…

    …quer se trate de um pedido “normal” ou ajaxizado (esta é para o tal do português)

    o html servido deve sempre conter todos os links e acções de forms na forma natural (request completo) e só depois, onload, deverás atacar os A’s com um script JS que faça o bind do onclick

    qualquer coisa como el.onclick = “handleajax(param, param, param); return false;”

    o ideal é usares uma framework JS, eu aconselho JQuery, mas o protoype também serve

    se os scripts php forem teus terás toda a flexibilidade (mas algum trabalho, claro) para criar esse nivel de abstração

    eu uso sempre dois front-controllers index.php e ajax.php

    ambos vão invocar a mesma acção, ou seja correr o mesmo código que faz a query (por exemplo) e preparar a resposta

    mas um devolve um layout completo e outro devolve o conteúdo para o JS, em xml ou json

    estruturas a tua aplicação, isolando o código que trata os parâmetros e prepara os dados é muito útil… o desafio de tornar todas, todas, todas as acções ajaxizáveis (e arrefinfa outra vez no tal português) é muito interessante

  12. Dextro

    30 de Maio de 2008 ás 22:08

    a utilizar Unbranded Firefox 2.0.0.14 em Linux

    Eu já tenho funções/metodos independentes que efectuam os pedidos todos logo não me custa nada fazer um ajax.php para lidar de forma “Ajaxizada” os dados.

    Obrigado pelas dicas, conselhos nunca são demais apesar de já me terem dito para eu fugir do jQuery. 😛