Ir para conteúdo

POWERED BY:

Arquivado

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

LuX_

[Resolvido] 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

Oi beleza? To com o mesmo problema, pois preciso de atualização minuto a minuto, tava dando uma garimpa você precisa fazer com que o IE não grave o cache tenho uma solução parcial que achei por ai, ainda não consegui acertar o ponto do bolo com ela mas até que vai só não sei até onde ajuda e onde atrapalha.

 

 

da uma olha dinha aqui é para php

 

 

<?php

 

//esvaziando cache

// Data no passado

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

 

// Sempre modificado

header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");

 

// HTTP/1.1

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

header("Cache-Control: post-check=0, pre-check=0", false);

 

// HTTP/1.0

header("Pragma: no-cache");

?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom, solucionei o problema.

Um amigo meu, inesperadamente, passou aqui e manja de ASP.

 

Ele me passou um algorítmo que ele encontrou com um professor quando ele teve este problema.

 

Se alguém tiver com o problema, vou postar a resposta.

 

é o seguinte:

 

em php já foi postado.

 

em ASP fica assim

<%

'Controle de cache graças ao I.E ¬¬

'HTTP/1.1

Response.CacheControl = "no-cache"

Response.AddHeader "cache-control","no-cache"

'HTTP/1.0

Response.AddHeader "Pragma", "no-cache"

Response.Expires = -1 ' minutos até a expiração

Response.Expiresabsolute = Now() ' data de expiração

%>

 

e na página HTML da consulta eu coloquei as meta tags que são essas:

 

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

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

<meta http-equiv="expires" content = "-1">

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.