Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

LuX_

Internet Explorer não atualiza alterações com ajax

Recommended Posts

Olá pessoal, estou fazendo coisas simples com AJAX e me deparei com um problema que, aparentemente é uma particularidade do Internet Explorer.

 

Fiz um esquema onde, ao clicar num checkbox, uma div aparece com uma tabela dentro com todos os dados recolhidos da tabela do banco.

 

Mas se por um acaso eu clico no checkbox de novo para fechar, deleto todos os registros do banco e abro de novo, o IE mostra tudo, como se nada houvesse sido apagado.

Imaginei que, por mais que fosse AJAX, seria necessario atualizar a página.

Pois atualizei e nada aconteceu...resolvi mudar o endereço da url e entrar em outro site, para depois entrar lá de novo...e mais uma vez NADA!

 

Descobri que o único jeito de o IE atualizar a consulta é fechando a aba e abrindo outra e digitando o endereço outra vez.

 

No Firefox isso não está ocorrendo... Vou postar o código que estou usando...Obrigado pela atenção.

 

 

function requisicao_ajax_lista(pagina,index_img,id) //página, ação e tabela, respectivamente no crud

{

tabela = id;

page = pagina;

try

{

ajax = new ActiveXObject("Microsoft.XMLHTTP");

}

catch(e)

{

try {

ajax = new ActiveXObject("Msxml2.XMLHTTP");

}

catch(ex)

{

try {

ajax = new XMLHttpRequest();

}

catch(exc)

{

alert("Esse browser não suporta Ajax");

ajax = null;

}

}

}

//----------

if (!ajax)

{

//Nao conseguiu instanciar o objeto xmlhttp para fazer as solicitacoes

alert("AJAX error. Your browser must support XMLHttpRequest object or enable use of scripting.");

}

 

 

if(ajax != null)

{

if (pagina=='actcrud.asp')

{

ajax.open('GET',pagina +'?acao='+ index_img + '&item=' + id ,true);// item=produto, categoria ou moderador;

ajax.setRequestHeader("Cache-Control", "no-cache");

ajax.setRequestHeader("Pragma", "no-cache");

ajax.onreadystatechange = status_ajax_lista;

ajax.send(null);

}

else

{

ajax.open('GET',pagina +'?index='+ index_img + '&id=' + id ,true);// index = número da primeira imagem a ser mostrada

ajax.setRequestHeader("Cache-Control", "no-cache");

ajax.setRequestHeader("Pragma", "no-cache");

ajax.onreadystatechange = status_ajax_lista;

ajax.send(null);

}

}

else

{

window.alert('Erro desconhecido!');

}

}

 

function status_ajax_lista()

{

if (ajax.readyState < 4)

{

if (page == 'produto.asp')

{

document.getElementById("zoom").innerHTML = "Carregando...";

}

else if(page=='actcrud.asp')

{

if (tabela== 'tabprodutos')

{

document.getElementById("delproduto").innerHTML= "Carregando";

}

else if (tabela == 'tabcategoria')

{

document.getElementById("delcategoria").innerHTML= "Carregando";

}

else if (tabela== 'moderador')

{

document.getElementById("delmoderador").innerHTML= "Carregando";

}

}

else

{

document.getElementById("imagens").innerHTML = "Carregando...";

}

}

 

if(ajax.readyState == 4 && ajax.status == 200)

{

retorno_ajax_lista(ajax.responseText);

}

}

 

function retorno_ajax_lista(response)

{

if (response == "404")

{

location.href= 'index.asp';

}

else if (page=='actcrud.asp')

{

if (tabela == 'tabprodutos')

{

document.getElementById("delproduto").innerHTML = response;

}

else if (tabela == 'tabcategoria')

{

document.getElementById("delcategoria").innerHTML = response;

}

else if(tabela == 'moderador')

{

document.getElementById("delmoderador").innerHTML = response;

}

}

else

{

if (page == 'produto.asp')

{

document.getElementById("zoom").innerHTML = response;

gerencialinks();

}

else

{

document.getElementById("imagens").innerHTML = response;

gerencialinks();

}

}

}

 

 

ESTOU OCULTANDO A FUNÇÃO gerencialinks() pois não é importante mostrá-la, afinal ela NÃO TEM AÇÃO NENHUMA NA PARTE QUE ESTOU CITANDO.

Compartilhar este post


Link para o post
Compartilhar em outros sites

cara cache do IE dá muitos problemas com isso..

 

tente adicionando

 

ajax.setRequestHeader("Cache-Control", "no-store, no-cache, must-revalidate");
ajax.setRequestHeader("Cache-Control", "post-check=0, pre-check=0");
ajax.setRequestHeader("Pragma", "no-cache");

se não rolar passe um novo parametro com o time para sempre mudando a chamada...

 

t+

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.