Ir para conteúdo

POWERED BY:

Arquivado

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

Inside

[Resolvido] Refresh Ajax

Recommended Posts

Caros amigos,

 

Alguém sabe dizer por que esse códido de refresh não funciona no IE 7. Testei no FX e Chrome, funciona normal mas no IE não.

 

 

<script type="text/javascript">
function createRequestObject() {

   var req;

   if(window.XMLHttpRequest){
	  // Firefox, Safari, Opera...
	  req = new XMLHttpRequest();
   } else if(window.ActiveXObject) {
	  // Internet Explorer 5+
	  req = new ActiveXObject("Microsoft.XMLHTTP");
   } else {
	  // There is an error creating the object,
	  // just as an old browser is being used.
	 alert("Your Browser Does Not Support This Script - Please Upgrade Your Browser ASAP");
   }

   return req;

}
// Make the XMLHttpRequest object
var http = createRequestObject();

function sendRequest(page) {

   // Open PHP script for requests
   http.open('get', page);
   http.onreadystatechange = handleResponse;
   http.send(null);

}
function handleResponse() {

   if(http.readyState == 4 && http.status == 200){

	  // Text returned FROM the PHP script
	  var response = http.responseText;

	  if(response) {
		 // UPDATE ajaxTest content
		 document.getElementById("captch").innerHTML = response;
	  }

   }

}

function repeatloop()
{
sendRequest('pagina_para_atualizar.asp'); 
setTimeout("repeatloop()", 1000);
}

window.onload=function() {
repeatloop();
}
</script>

<div id="captch"></div>

 

Obrigado pela atenção de todos.

Compartilhar este post


Link para o post
Compartilhar em outros sites

e ae inside, beleza?

 

nao entendi bem sua questao, quanto ao refresh que fala, pois o ajax busca dados sem refresh, e quanto a essa funcao ela so e executada quando chamada por algum elemento.

 

 

o que existe e um meta que serve para dar refresh a cada tempo

 

ex.

 

<META HTTP-EQUIV="REFRESH" CONTENT=2> isto faz um refresh da pagina a cada 2segundos

 

acho que usam isto em chats tb quando e para chamar a funcao ajax a cada tempo definido, nao tenho a certeza.

 

 

Nao sei se ajudei mas nao entendi bem a sua questao

Compartilhar este post


Link para o post
Compartilhar em outros sites

Caro webmind

 

eu conheço esse código META mas estou precisando atualizar uma página a cada segundo sem aquele tick nervoso, entende. Já pesquisei sobre o AJax. Esse código que postei atualiza a página sem tick, só que só funciona no Firefox e no Chrome mas no IE não funciona.

 

Me parece ter alguma coisa nessa parte que não deixa funcionar, mas como não entendo dessa programação não consigo resolver:

 

function createRequestObject() {

   var req;

   if(window.XMLHttpRequest){
	  // Firefox, Safari, Opera...
	  req = new XMLHttpRequest();
   } else if(window.ActiveXObject) {
	  // Internet Explorer 5+
	  req = new ActiveXObject("Microsoft.XMLHTTP");
   } else {
	  // There is an error creating the object,
	  // just as an old browser is being used.
	 alert("Your Browser Does Not Support This Script - Please Upgrade Your Browser ASAP");
   }

   return req;

Compartilhar este post


Link para o post
Compartilhar em outros sites

ok entao isso de nao funcionar no ie ja e mesmo algum erro no aja, nao tinha entendido.

 

Bem normalmente mta gente utiliza o if para pegar o xmlhttprequest, mas na verdade o mais adequado na minha opiniao e utilizar o try catch

 

tente assim em vez dos ifs

 

/// AJAX
 function ajaxInit() {
		var req;
		try {
			req = new ActiveXObject("Microsoft.XMLHTTP");
		} catch(e) {
			try {
				req = new ActiveXObject("Msxml2.XMLHTTP");
			} catch(ex) {
				try {
					req = new XMLHttpRequest();
				} catch(exc) {
					alert("Esse browser não suporta Ajax");
					req = null;
				}
			}
		}
		return req;
	}

Compartilhar este post


Link para o post
Compartilhar em outros sites

o codigo que uso normalmente, completo e assim

 

<script type="text/javascript">
/// AJAX
 function ajaxInit() {
		var req;
		try {
			req = new ActiveXObject("Microsoft.XMLHTTP");
		} catch(e) {
			try {
				req = new ActiveXObject("Msxml2.XMLHTTP");
			} catch(ex) {
				try {
					req = new XMLHttpRequest();
				} catch(exc) {
					alert("Esse browser não suporta Ajax");
					req = null;
				}
			}
		}
		return req;
	}
	function pegarvalores(parametro){
		ajax = ajaxInit(); 
		ajax.open("GET","pagina.php?cod="+parametro, true); 
		ajax.onreadystatechange=function() {
			  if (ajax.readyState==1){
			document.getElementById("load").innerHTML = "<img src='load.gif' />";
			}
			if ((ajax.readyState==4) && (ajax.status==200)){
		
			document.getElementById("resultado").innerHTML = ajax.responseText; 
			}
		}
		ajax.send(null);
	}
	

</script>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Caro webmind,

 

 

alguma coisa está estranha porque a sua correção no meu código também não funciona no IE mas no Firefox continua funcionando normalmente.

 

 

Agora o código que você postou, não funciona nem no Firefox.

 

O que será que acontece?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu achei até uma outra na Net que como a sua, funciona no Firefox mas no IE NÃO funciona também:

 

 

function createRequestObject() {
	//Determine what browser we are on and make a httprequest connection for ajax
	var xmlHttp=null;
 
	try {
		 // Firefox, Opera 8.0+, Safari
		 xmlHttp=new XMLHttpRequest();
	}
	catch (e) {
		 //Internet Explorer
		 try {
			  xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
		  }
		 catch (e) {
			  xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
		  }
	}
 
	return xmlHttp;
}

 

O navegador chato esse IE não rsrsrs

Compartilhar este post


Link para o post
Compartilhar em outros sites

Isso e estranho, você viu na console do ff se dava algum erro?

 

bem tente fazer so assim, nao sei se esta a usar asp ou php

 

########pagina1.html

 

<%@LANGUAGE="VBSCRIPT" CODEPAGE="65001"%>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">

<head>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

<title>Untitled Document</title>

<script>

var AJAXForms = false;

var LastField = null;

var isIE = false;

// on !IE we only have to initialize it once

if (window.XMLHttpRequest) {

AJAXForms = new XMLHttpRequest();

}

 

function escreve(parametro) {

 

if (window.XMLHttpRequest) {

// branch for IE/Windows ActiveX version

} else if (window.ActiveXObject) {

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

}

 

AJAXForms.onreadystatechange = processChange;

AJAXForms.open("GET", "consulta.asp?id=" +parametro);

AJAXForms.send(null);

}

 

function processChange() {

if (AJAXForms.readyState == 4) {

 

document.getElementById("resulta").innerHTML=AJAXForms.responseText;

 

}

}

</script>

</head>

 

<body>

<input type="button" value="testar Ajax" onclick="escreve(1)" />

<div id="resulta"></div>

</body>

 

 

</html>

 

 

########consulta.asp

 

 

<%

dim valor

 

valor=Request.QueryString("id")

 

response.write("Este e um teste:"&valor&" ! ")

 

%>

 

 

Deve ser retornado uma valor

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom, eu estou usando ASP.

 

No FF não dá errto nenhum funciona que é uma beleza. Mas no IE, incluo alguma coisa na página que o código Ajax deve puxar, não aparece a atualização na tela.

 

Vou testar esse código que você postou.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Caro webmind,

 

Bom seu código funciona mas não entendi como ele vai fazer o que eu preciso atualizarr a página sem precisar de META Refresh ou atualização manual.

Compartilhar este post


Link para o post
Compartilhar em outros sites

entao, você quer atualizar a pagina automaticamente sem chamar a funcao ?

 

se for isso na verdade nao sei bem como fazer isso,rrs

 

talvez de assim

---------------------------

 

eu penso que da para colocar um meta no proprio ajax mas nao tenho a certeza netao a solucao que vou usar e outra

 

tipo, cria-se uma funcao js

 

<script>

function alertar(){

funcao ajax(); // chamar funcao ajax tem de colocar o nome da sua funcao ajax

setTimeout("alertar()",1000)// neste caso atualiza de 1 em 1 segundo

}

window.onload=alertar; //isto e o evento de quando a pagina carrega

</script>

 

 

Acho que e isso

Compartilhar este post


Link para o post
Compartilhar em outros sites

Caro webmind,

 

infelizmente a função que você me passou não funciona, não atualiza a página comod deveria fazer.

 

Não sei se expliquei direito mas vou explicar de novo, preciso de um código que atualize a página automaticamente sem o refresh usado no META.

 

Pesquisei e achei esse código que postei em Ajax, mas não funiciona no IE. Só preciso de ajuda para que e sse código funcione no IE. Ok.

 

Obrigado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

pow ta dificil, realmente o ie e o ff as vezes quebram o juizo.

 

tente assim:

<script type="text/javascript">
/// AJAX
function ajaxInit() {
		var req;
		try {
			req = new ActiveXObject("Microsoft.XMLHTTP");
		} catch(e) {
			try {
				req = new ActiveXObject("Msxml2.XMLHTTP");
			} catch(ex) {
				try {
					req = new XMLHttpRequest();
				} catch(exc) {
					alert("Esse browser não suporta Ajax");
					req = null;
				}
			}
		}
		return req;
	}
	function sendRequest(pagina){
		ajax = ajaxInit();
		ajax.open("GET",pagina, true);
		ajax.onreadystatechange=function() {
			  if (ajax.readyState==1){
			document.getElementById("load").innerHTML = "<img src='load.gif' />";
			}
			if ((ajax.readyState==4) && (ajax.status==200)){
		
			document.getElementById("captch").innerHTML = ajax.responseText;
			}
		}
		ajax.send(null);
	}
	
function repetir()
{
sendRequest('pagina_para_atualizar.asp');
setTimeout("repetir()", 1000);
}

window.onload=repetir;

</script>
<div id="load"></div>
<div id="captch"></div>

 

se nao der assim e algum problema no ie pk isto devia funcionar

Compartilhar este post


Link para o post
Compartilhar em outros sites

Caro amigo webmind,

 

 

me perdoe por gastar tanto do seu tempo, mas não funcionou. O problema é esse IE mesmo.

 

No FF rola legal, atualiza faz tudo que eu quero, mas como a maioria das pessoas usa o IE fica dificil.

 

Mas eu vou continuar tentando achar algo na Net que resolva isso.

 

Se alguém ainda quiser ajudar, fico agradecido.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Caros amigos,

 

glória a Deus, depois de passar 3 dias inteiros procurandoa achei um código que funcionasse no IE. Amém.

 

Esse código pode chamar outra página ou pode atualizarr ela mesma. Ai vai:

 

<head> 

<script>
function createRequestObject() { 
var ro; 
var browser = navigator.appName; 
if(browser == "Microsoft Internet Explorer"){ 
ro = new ActiveXObject("Microsoft.XMLHTTP"); 
}else{ 
ro = new XMLHttpRequest(); 
} 
return ro; 
} 

var http = createRequestObject(); 

function sndReq() { 
http.open('get', 'teste12.asp'); 
http.onreadystatechange = handleResponse; 
http.send(true); 
setTimeout("sndReq()", 1000); // Recursive JavaScript function calls sndReq() every 2 seconds 
} 

function handleResponse() { 
if(http.readyState == 4){ 
var response = http.responseText; 
if (response != responseold || responsecheck != 1) { 
var responsecheck = 1; 
document.getElementById("messages").innerHTML = http.responseText; 
var responseold = response; 
} 
} 
} 
</script> 

</head> 

<body onLoad="sndReq();"> 

<div id="messages">

Coloque aqui o conteúdo que você quer atualizar, pode ser uma chamada para db ou qualquer coisa.

</div>

 

Detalhe: Eu testei na minha rede IIS, só funcionou na minha máquina mas on line funcionou beleza.

 

 

Valeu!

Compartilhar este post


Link para o post
Compartilhar em outros sites

valew inside fiquei tb curioso na resolucao deste codigo pois estive pensando em adaptar a um random de banners vindos de links da bd

Compartilhar este post


Link para o post
Compartilhar em outros sites

Houston, we have a problem!

 

 

Surgiu um problema na acentuação

 

Quando você coloca dentro da DIV um texto com acento ele não aparece corretamente.

 

Já tentei usar essa META mas não deu certo:

 

<meta http-equiv="content-type" content="text/html;charset=iso-8859-1" />

Alguém pode ajudar?

 

 

Obrigado pela atenção de todos.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Caros amigos,

 

Essa META funcionou no Chrome mas no FF e no IE não:

 

<meta http-equiv="content-type" content="text/html;charset=iso-8859-1" />

 

Alguém pode ajudar?

Compartilhar este post


Link para o post
Compartilhar em outros sites
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

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.