Jquery problemas com $.load() + Internet Explorer

Ajax, Geral, Jquery | 12 Apr 2011

Opá!
essa feature do IE é incrível e penosa, pois até o sujeito se dar conta perdeu se tempo! e tempo no desenvolvimento é money galera!!!

bem…

o lance é o seguinte vou postar todas as formas que eu desenvolvi para burlar o sistema de CACHE no Internet Explorer.

Digamos que eu tenha uma página de pedidos e tenha que atualizar ela via Ajax, utilizando o metodo $.load() do jquery.

Minha página onde irá fazer a requisição via $.load

1
2
3
4
5
6
7
8
9
10
11
...
<script type="text/javascript">
$(function(){
    $('#container').load('index.html');
})
</script>
...

<div id="container">
     <!-- LOAD DO CONTEUDO -->
</div>

e aqui nossa página que irá retornar os dados para o $.load
index.html

1
2
3
<ul>
    <li>Minha Lista bla bla bla</li>
</ul>

Tá mais aonde está o problema? o método está certo os parâmetros e tudo mais!!!
O problema é o IE mesmo maldito seja Bill Gates!!
O ie faz um cache da requisição e se estiver fazendo um load de um conteúdo dinâmico ele irá bugar!! ou irá retornar sempre os mesmos dados.

Para solucionar a feature do IE temos as seguintes opções:
1- colocar o método $.Ajax$.ajaxSetup() para desabilitar o cache

1
2
3
4
5
6
7
8
9
10
11
...
<script type="text/javascript">
$(function(){

    $.ajaxSetup({
        cache: false
    });

    $('#container').load('index.html');
})
</script>

2- usar o metodo $.ajax

1
2
3
4
5
<script type="text/javascript">
    $.ajax({url: 'index.hmtl', cache: false, success: function(valor, status) {
        $('#container').html(valor);
    }});
</script>

3 – adicionar no header da página os parâmetro de no-cache

1
2
3
4
5
6
7
8
9
10
11
12
13
<html>
    <header>
        <title>Implementado</title>
        <meta http-equiv='cache-control' content='no-cache'>
        <meta http-equiv='expires' content='0'>
        <meta http-equiv='pragma' content='no-cache'>
</header>
<body>
    <ul>
        <li>Minha Lista bla bla bla</li>
    </ul>
</body>
</hmtl>

4 – ultimo e não tão elegante, adicionar um time na url da requisição, que por incrível que pareça e o mais lógico é o que o jquery faz quando passamos cache=false nos métodos acima.

1
2
3
4
5
6
7
8
 ...
<script type="text/javascript">
$(function(){
    $('#container').load('index.html?no_cache=' + (new Date()).getTime()
);
})
</script>
...

Bem espero ter dado uma luz ai!!, se tiver alguma sugestão postá ai!
há braços!

Related posts:

  1. TinyMCE v.3.4.2 ImageManager customizado Tchê!! eai rapeize, é o seguinte. utilizar o TinyMCE –...
  2. CakePHP validando formulários em Ajax com jQuery Buenas! essa semana ou semana passada não lembro, o ricardo...
  3. Como implementar comet com php Buenas!!! hj vou falar sobre Comet (ajax reverse,Ajax Push,comet ou...

Related posts plugin by:Related posts plugin  

Start earning money online in one hour visit:Ways to make money.

6 Comments

Newer Comments »

Leave a Reply

* - fields are required