Jquery problemas com $.load() + Internet Explorer
Ajax, Geral, Jquery | 12 Apr 2011Opá!
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:
- TinyMCE v.3.4.2 ImageManager customizado Tchê!! eai rapeize, é o seguinte. utilizar o TinyMCE –...
- CakePHP validando formulários em Ajax com jQuery Buenas! essa semana ou semana passada não lembro, o ricardo...
- Como implementar comet com php Buenas!!! hj vou falar sobre Comet (ajax reverse,Ajax Push,comet ou...
Related posts plugin by:Related posts plugin













Cara, esta dica me ajudou muito, seu blog será divulgado por mim…
Valew!! obrigado mesmo..