Do começo e com as minhas palavras:

AJAX

é mais simples do que parece. A grosso modo, não temos refresh(próprio das requisições HTTP comuns) para trazer respostas do servidor. O ponto importante a notar aqui, é que enviamos informações, e teremos um retorno(mesmo funcionamento de uma requisição HTTP).

Esse retorno, pode vir ‘formatado’ (jSON, XML, HTML…), mas ainda assim é apenas texto puro. Não é retornado por exemplo ‘um array php, ou uma variavel’, mas sim um texto puro(o output dessa variavel, desse array…).

Alguns conceitos e definições:

JavaScript é uma linguagem de script client-side;

FrameWorks são um conjuntos ‘de códigos’ que devem facilitar o desenvolvimento de rotinas especifícas ou aplicações completas;

jQuery É apenas um FrameWork(dentre muitos) escrito sob a linguagem JavaScript.

AJAX É a reunião de várias tecnologias, formando uma metodologia de desenvolvimento.

DOM é uma especificação que não depende de linguagem nem plataforma. Um padrão de acesso aos documentos, e por consequência aos elementos dele.

Vou me ater ao nosso contexto, conheço as definições completas de cada um dos termos.

Antes de falar sobre Onde usar e onde não usar AJAX?, alguns desenvolvedores precisam entender o que é ajax, e o que não é.

Enquanto ainda estamos manipulando o DOM, não estamos lidando com ajax ainda. Se podemos trazer o conteúdo já na carga do documento, então devemos fazer da forma simples.

Leia a palavra ‘ajax’ como ‘requisição’.

Se tem ‘requisições’ na jogada então talvez, você tenha ajax. Se não tem, e nem precisa requisitar nada ao servidor, então não temos ajax.

Precisa de alguma informação que a tua linguagem server-side, pode dar ? Necessita disso sem um refresh da tela? Se não puder trazer essa informação já na tela, ai sim, você precisa de ajax.

Não existe uma ‘forma ajax’ de resolver. O correto é analisar se vale a pena usar ou não, se era necessário, se encaixa no teu contexto…

Ajax não são efeitos. Não é qualquer coisa que não faça refresh. Ajax não é a solução para tudo.. Ajax não substitui o flash. Ajax não envia arquivos. Ajax sozinho não faz barras de loading…. Ajax não é jQuery. jQuery não é Ajax. Não é uma linguagem, nem sub-linguagem (ouvi essa no forum). Não é cálculo entre inputs’(se não depender de informações de um banco de dados por exemplo). Não é Drag And Drop. Não faz slideshow…

Use ajax onde você não puder fazer da forma convencional, e ainda assim, deixe funcionando, mesmo que o usuário não tenha suporte a javascript.

Ajax pode ser usado para enriquecer e muito a experiência do usuário. Ajax é melhorar a usabilidade da sua aplicação. Ajax é não obrigar o cliente, a descarregar todo um conteúdo estático, que não ia sofrer alteração, apenas para enviar e receber uma resposta simples do servidor. Ajax é uma forma de interagir mais, de tornar as tuas páginas web, mais próximas das aplicações desktop. Ajax é economia de banda se bem usado. Ajax é composto por várias tecnologias. Ajax é um conceito.

Na verdade, no fundo no fundo, ajax é fazer uma requisição assíncrona ou não. E dela trazer um retorno, sem depender do refresh da tela. É isso. Mas muitos usam de forma errada. Abusam onde não deveriam, confundem…

E de novo, começam a querer usar, sem conhecer as linguagens base pelas quais todo o processo é feito.

Ajax é perigoso. Se mal usado, pode comprometer todo o site, toda a aplicação, deixar tudo mais lento, detonar a banda, expor o sistema… Não é culpa da linguagem javascript, mas sim da forma com que estão fazendo os sistemas hoje em dia. É client-side galera !! Acordem!

Possui vulnerabilidades por estar exposto, tudo porcamente programado, é vulnerável. AJAX bem feito e bem usado, só trás benefícios. A antítese também é verdadeira:

AJAX mal feito e mal usado, só trás problemas!

AJAX pode ser muito melhor e muito mais. Entretanto, é preciso ter bom senso de saber os locais certos, onde se deve ou não aplicar.