Ir para conteúdo

Arquivado

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

André Maretti

Não Funciona em FireFox

Recommended Posts

Aí pessoal.... estou estudando Ajax um pouquino, e este meu script funciona em Internet Explorer perfeitamente, mas não funciona em FireFox...

 

Aguém sabe o porque??? http://forum.imasters.com.br/public/style_emoticons/default/upset.gif

 

Meus scritps:

 

Arquivo mens_simples.html

slç<!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=iso-8859-1" /><title>Untitled Document</title><script language="javascript">	function retorno(){		if(oxhr.readystate ==4){			if(oxhr.status == 200){				alert(oxhr.responseText);			}		}	}	function ola_mundo(){		if(window.ActiveXObject){			oxhr = new ActiveXObject("Microsoft.XMLHTTP");			alert("Objeto XHR criado para Internet Explorer");		} else if (window.XMLHttpRequest){			oxhr = new XMLHttpRequest();			alert("Objeto XHR criado para Fire Fox");				}		oxhr.open("GET", "gera_mens_simples.php");		oxhr.onreadystatechange = retorno;		oxhr.send(null);	}</script></head><body><label><input type="submit" name="Submit" value="Diga olá pra o Mundo...!" onclick="ola_mundo()" /></label></body></html>

Arquivo gera_mens_simples.php

<?PHP	echo("olha mundo!");?>

 

Se alguém quiser testar pode acessar:

http://www.micropinhal.com.br/ajax/mens_simples.html

 

Fico aguardanto um help da galera!

 

Valeu!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Umm, realmente tá estranho.

 

Tente fazer o seguinte:

 

1) Declare a variável oxhr como global por fora de suas duas funções: var oxhr; (antes das 2 funç~eos)

 

2) passe o terceiro parametro 'true' na chamada oxhr.open. Este terceiro parametro indica que o ajax deve rodar assíncrono.

 

Deve ficar:

<script language="javascript">var oxhr;	function retorno(){		if(oxhr.readystate ==4){			if(oxhr.status == 200){				alert(oxhr.responseText);			}		}	}	function ola_mundo(){		if(window.ActiveXObject){			oxhr = new ActiveXObject("Microsoft.XMLHTTP");			alert("Objeto XHR criado para Internet Explorer");		} else if (window.XMLHttpRequest){			oxhr = new XMLHttpRequest();			alert("Objeto XHR criado para Fire Fox");				}		oxhr.open("GET", "gera_mens_simples.php",true);		oxhr.onreadystatechange = retorno;		oxhr.send(null);	}</script>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cara,é um teste besta, mas realmente não consigo pensar em outra coisa.1) Troque o onreadystate e a open de lugar. Ficará assim:oxhr.onreadystatechange = retorno;oxhr.open("GET", "gera_mens_simples.php",true);2) Retire os dois alerts que estão após a criação do objeto xmlhttprequest:alert("Objeto XHR criado para Internet Explorer");alert("Objeto XHR criado para Fire Fox"); (Mas acho que o problema realmente é a ordem entre o onreadystate e o open)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Micox... o problema continua... :( Será q alguém tem alguma outra idéia?Ahh... se alguém tiver um exemplo parecido pra me mandar eu agradeço... pq na verdade eu não preciso q esse script especificamente funcione... pq ele não vai ser usado pra nada... só estou estudando Ajax... se alguém tiver algum q funcione posta aí pra mim por favor.. pra mim adaptar o meu!Fico no aguardo então!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Descobri seu erro é na fork do retorno()

Faça assim

<script language="javascript">var oxhr;	function retorno(){		if(oxhr.readystate ==4){				alert(oxhr.responseText);		}	}	function ola_mundo(){		if(window.ActiveXObject){			oxhr = new ActiveXObject("Microsoft.XMLHTTP");			alert("Objeto XHR criado para Internet Explorer");		} else if (window.XMLHttpRequest){			oxhr = new XMLHttpRequest();			alert("Objeto XHR criado para Fire Fox");				}		oxhr.open("GET", "gera_mens_simples.php",true);		oxhr.onreadystatechange = retorno;		oxhr.send(null);	}</script>

Essa fork naum devia dar esse erro, mas eu num sei o q acontece...

 

Kara uma dica busca outros meios de montar o Ajax...

Existem meios melhores...

Compartilhar este post


Link para o post
Compartilhar em outros sites

silverfox, o problema continua.... e eu instalei o Opera e tb dá o mesmo problema...!você disse que esse não é o melhor jeito de montar o Ajax,... você tem algum exemplo pra me dar?Fico no aguardo de mais idéias....!

Compartilhar este post


Link para o post
Compartilhar em outros sites

<script language="javascript">function openAjax() { var Ajax; try {Ajax = new XMLHttpRequest(); // XMLHttpRequest para browsers mais populares, como: Firefox, Safari, dentre outros. }catch(ee) { try {Ajax = new ActiveXObject(" Msxml2.XMLHTTP"); // Para o IE da MS }catch(e) { try {Ajax = new ActiveXObject("Microsoft.XMLHTTP"); // Para o IE da MS }catch(e) {Ajax = false; } } } return Ajax; } function AbrirSite(){if(document.getElementById) { // Para os browsers complacentes com o DOM W3C. var exibeResultado = document.getElementById("MeuDiv"); // div que exibirá o resultado. var Ajax = openAjax(); // Inicia o Ajax. Ajax.open("GET", "pagina.php", true);Ajax.onreadystatechange = function() { if(Ajax.readyState == 4) { // Quando estiver tudo pronto. if(Ajax.status == 200) { var resultado = Ajax.responseText; // Coloca o retornado pelo Ajax nessa variável exibeResultado.innerHTML = resultado;} else { exibeResultado.innerHTML = "Erro: ."; } } } Ajax.send(null); // submete} }</script><a href="java script:AbrirSite();">Carregar arquivo</a><div id="MeuDiv"></div>

Tah ae o código que funciona no Firefox e Ie e qualquer outro browser moderno ^^

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá pessoal, estou com esse problema também, mas uma coisa que ninguém comentou por não ter reparado talvez, é o fato de o problema real ser a declaração do Doctype. Com ele no Firefox não funciona, sem ele vai na boa.

O exemplo que eu tenho é igual ao seu silverfox, simples e eficiente, porém estou usando-o no ASP.

Podem testar, coloquem e tirem o Doctype para ver a diferença.

André, em algum dos posts aí você falou de um textinho "slç", ele está no começo do seu código antes da declaração do Doctype. Era isso? ^^

 

Não sei se vou enviar da maneira correta, vamos ver, mas abaixo segue o meu código com uma solução para os acentos.

Se alguém encontrar uma solução, da um help aí por favor e vou continuar procurando, se encontrar algo post aqui.

 

Vlws.

 

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"><html xmlns="http://www.w3.org/1999/xhtml" xml:lang="pt-br"><head><meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /><meta http-equiv="Content-Type"  content="application/xhtml+xml; charset=iso-8859-1" /><title>TekLógica Informática</title><link href="style.css" rel="stylesheet" type="text/css" /><script language="javascript">function openAjax() {var Ajax;try {Ajax = new XMLHttpRequest(); // XMLHttpRequest para browsers mais populares, como: Firefox, Safari, dentre outros.}catch(ee) {try {Ajax = new ActiveXObject("Msxml2.XMLHTTP"); // Para o IE da MS}catch(e) {try {Ajax = new ActiveXObject("Microsoft.XMLHTTP"); // Para o IE da MS}catch(e) {Ajax = false;}}}return Ajax;}function carregaAjax(id, pag) {if(document.getElementById) { // Para os browsers complacentes com o DOM W3C.var exibeResultado = id; // div que exibirá o resultado.var Ajax = openAjax(); // Inicia o Ajax.Ajax.open("GET", pag, true); // fazendo a requisição, a variável pag vem pelo linkAjax.onreadystatechange = function(){if(Ajax.readyState == 1) { // Quando estiver carregando, exibe: carregando...exibeResultado.innerHTML = "<div align=’center’><strong>Carregando...</strong></div>";}if(Ajax.readyState == 4) { // Quando estiver tudo pronto.if(Ajax.status == 200) {var resultado = Ajax.responseText; // Coloca o retornado pelo Ajax nessa variávelresultado = resultado.replace(/\+/g," "); // Resolve o problema dos acentos (saiba mais aqui: http://www.plugsites.net/leandro/?p=4)resultado = unescape(resultado); // Resolve o problema dos acentosexibeResultado.innerHTML = resultado;} else {exibeResultado.innerHTML = "Erro: .";}}}Ajax.send(null); // submete}}</script></head><body><div id="principal">	<!--#include file="topo.asp" -->	<div id="conteudo"></div>	<!--#include file="rodape.asp" --></div></body></html>

Compartilhar este post


Link para o post
Compartilhar em outros sites

O meu está dando problemas na propriedade status ( função processaResposta() ), não está funcionando no firefox.

 

<!-- Formulário HTML //--><!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"><html><head><meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /><title>Untitled Document</title><script language="javascript" type="text/javascript" src="config/configAjax.js"></script></head><body><p>Exemplo da utilização dos métodos status, statusText e readyState do HMLHttpRequest</p><form>	<button onclick="TesteStatus();">Executar Chamada</button></form><div id="Resposta"></div></body></html>

//arquivo configAjax.jsvar Ajax = false;function AjaxRequest(){	Ajax = false;	if(window.XMLHttpRequest) // mozilla	{		Ajax = new XMLHttpRequest();	}	else if(window.ActiveXObject) // ie	{		try		{			Ajax = new ActiveXObject("Msxml2.XMLHTTP");		}		catch(e)		{			try			{				Ajax = new ActiveXObject("Microsoft.XMLHTTP");			}			catch(e)			{}		}	}}function TesteStatus() {		AjaxRequest();	Ajax.onreadystatechange = processaResposta;	adicionar('1readyState : ' + Ajax.readyState);	Ajax.open('GET', 'ajax_processa.php', true);	Ajax.send(null);}function adicionar(texto){	var e = document.getElementById('Resposta');	var no = document.createElement('DIV');	var t = document.createTextNode(texto);	e.appendChild(no);	no.appendChild(t);}function processaResposta(){	adicionar('2readyState : ' + Ajax.readyState);	if(Ajax.readyState==4)	{		adicionar('3status : ' + Ajax.status + ' - ' + Ajax.statusText);		if(Ajax.status==200)		{ 			adicionar("Resposta do Servidor : " + Ajax.responseText);		}	}}

O erro apresentado no firefox é esse:

 

Erro: [Exception... "Component returned failure code: 0x80040111 (NS_ERROR_NOT_AVAILABLE) [nsIXMLHttpRequest.status]" nsresult: "0x80040111 (NS_ERROR_NOT_AVAILABLE)" location: "JS frame :: http://localhost/ajax/config/configAjax.js :: processaResposta :: line 52" data: no]

Arquivo-fonte: http://localhost/ajax/config/configAjax.js

Linha: 52

Compartilhar este post


Link para o post
Compartilhar em outros sites

Acabei de descobri que ñ estava funcionando no firefox só porque eu ñ especifiquei o type do button

 

onde tem

 

<button onclick="TesteStatus();">Executar Chamada</button>

fica:

 

<button type="button" onclick="TesteStatus();">Executar Chamada</button>

Agora funciona http://forum.imasters.com.br/public/style_emoticons/default/joia.gif

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.