Jump to content
fil79

problema cache Jquery datatable

Recommended Posts

fil79

Boas

Tenho uma aplicação que usa o plugin datatable do jquery para fazer a listagem de uma tabela.

Num outro script tenho um form para introduzir e editar valores da mesma tabela. Após a edição da mesma o script redirecciona para a página da listagem com o datatable. Acontece que as alterações nunca ficam visiveis. Tenho de fazer control+f5 para as mesmas ficarem visiveis.

Já tentei com php

header("Cache-Control: no-cache, must-revalidate");

header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");

E também com as meta tags de HTML

<meta http-equiv='cache-control' content='no-cache'>

<meta http-equiv='expires' content='0'>

<meta http-equiv='pragma' content='no-cache'>

Mas continua sem dar. Desde já agradeço


MCITP-MCTS-MCP

Share this post


Link to post
Share on other sites
fil79

não, já procurei essa instrução na documentação e não encontro

este é o codigo

  	 $(document).ready( function() {
      	    $('#dttabela').dataTable( {
      		  "iDisplayLength": 50,
                "bPaginate": false,
               "aaSorting": [[ 0, "asc" ]]        
      	    } );
      	  } )


MCITP-MCTS-MCP

Share this post


Link to post
Share on other sites
legd1991

Estás a guardar os dados na base de dados antes de redireccionares?

Share this post


Link to post
Share on other sites
HappyHippyHippo

deixa-me fazer uma pergunta absurda:

- por acaso não estás a dizer que estás a fazer refresh na página X após o envio dos dados na página Y, pois não ?


IRC : sim, é algo que ainda existe >> #p@p

Share this post


Link to post
Share on other sites
fil79

Estás a guardar os dados na base de dados antes de redireccionares?

Sim os dados estão guardados. O problema é que que após o reencaminhamento não aparecem no datatable, acho que o problema é mesmo o cache do plugin, só aparece apos um refresh (control+f5)

deixa-me fazer uma pergunta absurda:

- por acaso não estás a dizer que estás a fazer refresh na página X após o envio dos dados na página Y, pois não ?

Não estou a perceber a tua pergunta. passo a precisar o cenário: tenho o ficheiro index.php que lista a tabela. no ficheiro form.php (que envia para o ficheiro form_action.pho) tenho o formulario para adicionar dados. No ficheiro form_action executo o SQL, e e seguida através do header location envia de novo para o index.

Após o redireccionamento a tabela continua igual ao que estava anteriormente. Faço control+f5 e só assim aparece o novo registo

Edited by fil79

MCITP-MCTS-MCP

Share this post


Link to post
Share on other sites
legd1991

Coloca a página do plugin para vermos como funciona esse plugin e para ver se tem alguma opção que influencie isso

Share this post


Link to post
Share on other sites
rumbafum

Os dados são carregados com ajax? Se sim é provável que o browser cache o resultado da chamada ajax, principalmente se usas o IE.

Para passares o problema da cache podes sempre acrescentar um parâmetro no url. Se os dados são carregados por ajax usa o parâmetro nesse url ou então em última instância faz um POST em vez de GET.

Share this post


Link to post
Share on other sites
fil79

Os dados são carregados com ajax? Se sim é provável que o browser cache o resultado da chamada ajax, principalmente se usas o IE.

Para passares o problema da cache podes sempre acrescentar um parâmetro no url. Se os dados são carregados por ajax usa o parâmetro nesse url ou então em última instância faz um POST em vez de GET.

Os dados não são carregados com ajax


MCITP-MCTS-MCP

Share this post


Link to post
Share on other sites
rumbafum

usa um parâmetro no url para o qual fazes o redirecionamento e verifica se tens o mesmo problema.

Diria que colocares no php: header("Cache-Control:no-cache") devia ter funcionado

Share this post


Link to post
Share on other sites
cusco

Olá não tenho a certeza do que digo mas parece que o teu problema é algo pelo qual já passei. Queres alterar a tabela depois de ela já existir.

Eu tenho num $.ajax() a criação de uma datatable, e o problema surge quando volto a chamar este .ajax e a datatable já existe

uso assim:

success: function(msg){
 //console.log(msg);
 dataTable = document.getElementById('dataTable');
 $(dataTable).empty();
 tHead = "<thead><tr><th>Operador</th><th>Quantidade Chamadas</th><th>Tempo Médio p/ Chamada</th><th>Chamada mais longa</th><th>Chamada mais curta</th><th>Total em Chamada</th></tr></thead>";
 $(dataTable).append(tHead);
 oTable = $(dataTable).dataTable({
   // "aaSorting": [ [0,'asc'], [1,'asc'] ],
   "iDisplayLength": 50,
   "sPaginationType": "full_numbers",
   "bProcessing": true,
   "bRetrieve": true
 });
 oTable.fnDestroy();
 $.each( msg, function(index, value){
   //console.log('teste: ' + value);
   //agentList.innerHTML += "\t<option>" + value.agent + "</option>\n";
   $(dataTable).dataTable().fnAddData([value.agent,value.callNr,value.average,value.max,value.min,value.total]);
   //$(dataTable).append("\t<tr><td>"+value.agent+"</td><td>"+value.callNr+"</td><td>"+value.average+"</td><td>"+value.max+"</td><td>"+value.min+"</td><td>"+value.total+"</td></tr>\n");
 });
 dataTable.style.display = 'inline';
}

Edited by Rui Carlos
Formatação do código.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.