/ / JQuery carregador ajax e cache do navegador - javascript, jquery, ajax

Carregador de ajax JQuery e cache do navegador - javascript, jquery, ajax

Estou usando o JQuery para carregar alguns dados dinamicamentevia ajax. Sempre que o usuário inicia a solicitação do ajax (ou seja, clica em um botão ou carrega uma página etc.), eu mostro um gif do carregador do ajax. Depois que as solicitações do ajax são concluídas (ou erros), oculto a imagem do carregador.

Isso funciona muito bem na maioria das vezes. Mas notei (no IE7, por exemplo) que as chamadas ajax que são enviadas no carregamento da página são armazenadas em cache (eu acho). Então, basicamente, quando eu atualizo a página e a chamada ajax provavelmente é acionada, o IE carregará os dados em cache. Como resultado, o retorno de chamada bem-sucedido (ou erro) no jquery .ajax() a função nunca é chamada e a imagem do carregador permanece ligada indefinidamente. Qual é a melhor maneira de contornar isso?

Respostas:

3 para resposta № 1

Se você deseja desativar o cache de resultados ajax em todo o site, use .ajaxSetup ():

$.ajaxSetup( { cache : false } );

Em seguida, você pode substituir o comportamento caso a caso por:

$.ajax ({
...
cache: true,
...

2 para resposta № 2

.ajax() oferece o cache propriedade que é true por padrão:

$.ajax({
...
cache:  false
});

http://api.jquery.com/jQuery.ajax/

Como alternativa, você pode adicionar um número aleatório à sua string de consulta de solicitação.

$.ajax({
url:   "/path/script.pl",
dataType: "text",
type: "GET",
data: {
q:   ~~(Math.random()*200)
},
success: function(data){
// data
}
});

0 para resposta № 3

jQuery.ajax na verdade, possui uma opção integrada para evitar exatamente isso:

$.ajax( { cache : false } );

A documentação está incluída no método ajax: jQuery.ajax ()

Da documentação:

cache Padrão: true, false para dataType "script" e "jsonp" Se definido como false, forçará as páginas solicitadas a não serem armazenadas em cache pelo navegador.