Ir para conteúdo

POWERED BY:

Arquivado

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

pauloliuthe

Ajax não Funciona

Recommended Posts

Olá pessoal, o Ajax abaixo não funciona em outros navegadores que não seja o IE. Estou já a muito tempo com este erro e não consigo resolver. O que há de errado?

 

<html>
<head>
<title>Menu</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<script src="ajaxInit.js" language="javascript" type="text/javascript"></script>

<script>
function ajaxInit() 
{ 
	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 getCidades() {
  sEstado = document.getElementById("estado").value;   
  var Ajax = ajaxInit();	  
  if (Ajax) {	 
  Ajax.open('GET', 'cidades.php?estado=' + sEstado, true);		  
  Ajax.onreadystatechange = function () {		 
  if (Ajax.readyState == 4) {			// Quando estiver tudo pronto.
  if (Ajax.status == 200) {			   
  cidades.innerHTML = Ajax.responseText;			
  } else {			   
  alert(Ajax.statusText);			
  }		 
  }	  
  }	  
  Ajax.send(null);   
  }   
  }
  </script>
  </head>
  <body>
  <form> 
  Estado:   
	<select name="estado" onChange="getCidades(this.value)" >
	  <option>Escolha um estado</option>
	  <option value="AC">Acre</option>
	  <option value="AP">Amapá</option>
	  <option value="AM">Amazonas</option>
	  <option value="BA">Bahia</option>
	  <option value="CE">Ceará</option>
	  <option value="DF">Distrito Federal</option>
	  <option value="ES">Espírito Santo</option>
	  <option value="GO">Goiás</option>
	  <option value="MA">Maranhão</option>
	  <option value="MT">Mato Grosso</option>
	  <option value="MS">Mato Grosso do Sul</option>
	  <option value="MG">Minas Gerais</option>
	  <option value="PA">Pará</option>
	  <option value="PB">Paraíba</option>
	  <option value="PR">Paraná</option>
	  <option value="PE">Pernambuco</option>
	  <option value="PI">Piauí</option>
	  <option value="RJ">Rio de Janeiro</option>
	  <option value="RN">Rio Grande do Norte</option>
	  <option value="RS">Rio Grande do Sul</option>
	  <option value="RO">Rondônia</option>
	  <option value="RR">Roraima</option>
	  <option value="SC">Santa Catarina</option>
	  <option value="SP">São Paulo</option>
	  <option value="SE">Sergipe</option>
	  <option value="TO">Tocantins</option>
	</select>   
  	<div id="cidades"></div>
</form>
</body>
</html>

Muito Obrigado Pessoal

Compartilhar este post


Link para o post
Compartilhar em outros sites

Hum... veja se assim te ajuda:

 

bem... pode ser essa linha:

cidades.innerHTML = Ajax.responseText;

 

troca para isso aqui:

document.getElementById("cidades").innerHTML = Ajax.responseText; 

 

caso contraio tenta esse padrão aqui:

function GetXMLHttp() {
if (navigator.appName == "Microsoft Internet Explorer") {
	xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
} else {
	xmlHttp = new XMLHttpRequest();
}
return xmlHttp;
}
var mod = GetXMLHttp();

function getCidades(valor) {
mod.open("GET", "Carrega.ajax.asp?id="+valor+"", true);
mod.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
mod.onreadystatechange = function() {
	if (mod.readyState == 4) {
		document.getElementById("cidades").innerHTML = mod.responseText;
	}
};
mod.send(null);
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cara se você não pretende construir um novo framework ou está querendo entender como funciona a programação usando AJAXA, usa alguma coisa pronta tipo JQuery, prototype, Mootools enfim, soluções não faltam

 

Você ganhará mais produtividade e não precisará se preocupar com algumas questões de compatibilidade de browser

 

abs

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.