Quando você usa Ajax (JavaScript assíncrono e XML) para acessar o servidor sem recarregar a página da web, você tem duas opções sobre como passar as informações da solicitação ao servidor: GET ou POST.
Essas são as mesmas duas opções que você tem ao passar solicitações ao servidor para carregar uma nova página, mas com duas diferenças. A primeira é que você está solicitando apenas uma pequena informação em vez de uma página da web inteira. A segunda e mais notável diferença é que, como a solicitação do Ajax não aparece na barra de endereços, seus visitantes não notarão diferença quando a solicitação for feita.
As chamadas feitas usando GET não expõem os campos e seus valores em qualquer lugar que o POST também não exponha quando a chamada é feita do Ajax.
O que você não deve fazer
Então, como devemos escolher qual dessas duas alternativas deve ser usada?
Um erro que alguns iniciantes podem cometer é usar GET para a maioria de suas chamadas, simplesmente porque é o mais fácil dos dois codificar. A diferença mais perceptível entre as chamadas GET e POST no Ajax é que as chamadas GET ainda têm o mesmo limite na quantidade de dados que podem ser transmitidos ao solicitar um novo carregamento de página.
A única diferença é que, porque você está processando apenas uma pequena quantidade de dados com uma solicitação Ajax (ou pelo menos é assim que você deve usá-lo), é muito menos provável que você encontre esse limite de comprimento no Ajax, como faria ao carregar uma Web completa página. Um iniciante pode reservar usando solicitações POST para as poucas instâncias em que precisa passar mais informações que o método GET permite.
A melhor solução quando você tem muitos dados para passar dessa maneira é fazer várias chamadas do Ajax passando algumas informações por vez. Se você vai passar grandes quantidades de dados em uma única chamada Ajax, provavelmente seria melhor simplesmente recarregar a página inteira, pois não haverá diferença significativa no tempo de processamento quando grandes quantidades de dados forem envolvidos.
Portanto, se a quantidade de dados a serem transmitidos não é uma boa razão para escolher entre GET e POST, o que devemos usar para decidir?
Na verdade, esses dois métodos foram configurados para propósitos totalmente diferentes, e as diferenças entre como eles funcionam são em parte devido à diferença na qual eles devem ser usados. Isso não se aplica apenas ao uso de GET e POST do Ajax, mas em qualquer lugar em que esses métodos possam ser empregados.
O objetivo do GET e POST
GET é usado como o nome indica: para obter em formação. Ele deve ser usado quando você estiver lendo informações. Os navegadores armazenam em cache o resultado de uma solicitação GET e, se a mesma solicitação GET for feita novamente, eles exibirão o resultado em cache em vez de executar novamente a solicitação inteira.
Isso não é uma falha no processamento do navegador; ele foi projetado deliberadamente para funcionar dessa maneira, a fim de tornar as chamadas GET mais eficientes. Uma chamada GET está apenas recuperando as informações; não se destina a alterar nenhuma informação no servidor, e é por isso que solicitar os dados novamente deve retornar os mesmos resultados.
O método POST é para postagem ou atualizar informações no servidor. Espera-se que esse tipo de chamada altere os dados, e é por isso que os resultados retornados de duas chamadas POST idênticas podem muito bem ser completamente diferentes um do outro. Os valores iniciais antes da segunda chamada POST serão diferentes dos valores anteriores à primeira porque a chamada inicial terá atualizado pelo menos alguns desses valores. Portanto, uma chamada POST sempre obterá a resposta do servidor, em vez de manter uma cópia em cache da resposta anterior.
Como escolher GET ou POST
Em vez de escolher entre GET e POST com base na quantidade de dados que você está passando na sua chamada Ajax, você deve escolher com base no que a chamada Ajax está realmente fazendo.
Se a chamada for recuperar dados do servidor, use GET. Se for esperado que o valor a ser recuperado varie ao longo do tempo como resultado de outros processos que o atualizam, inclua um parâmetro de tempo atual em o que você está passando na sua chamada GET para que as chamadas posteriores não usem uma cópia em cache anterior do resultado que não é mais corrigir.
Use POST se sua chamada for gravar todos os dados no servidor.
De fato, você não deve usar apenas esse critério para selecionar entre GET e POST para suas chamadas Ajax, mas também para selecionar qual deve ser usado para processar formulários em sua página da web.