Ir para conteúdo

POWERED BY:

Arquivado

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

kania

[Resolvido] Ajax não funciona no FF

Recommended Posts

Olá pessoal, estou com um script aqui que não tem jeito de funcionar no FF, no IE sem problemas.

 

 

try{
	xmlhttp = new XMLHttpRequest();
}catch(ee){
	try{
		xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
	}catch(e){
		try{
			xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
		}catch(E){
			xmlhttp = false;
		}
	}
}

fila=[];
ifila=0;

function ajaxLoad(url, destino){
	if(destino!=Object){ destino = document.getElementById(destino); }
	if(destino.nodeName=="SELECT"){
		while(destino.options.length>0)destino.options[0]=null;
		destino.options[0]=new Option(" -- Aguarde -- "," -- Aguarde -- ");
	} else {
		destino.innerHTML="Carregando...";
	}
	fila[fila.length]=[url,destino];
	if((ifila+1)==fila.length)ajaxRun();
}

function ajaxShow(valor,destino){
	if(destino.nodeName=="SELECT"){
		while(destino.options.length>0)destino.options[0]=null;
		if(valor.charAt(0)=="[" && valor.charAt(valor.length-1)=="]"){
			var destinoTmp=eval(valor);
			for(var i=0;i<destinoTmp.length;i++){
				destinoTmp[i][0]=unescape(destinoTmp[i][0]);
				destinoTmp[i][1]=unescape(destinoTmp[i][1]);
				destino.options[destino.options.length]=new Option(destinoTmp[i][1],destinoTmp[i][0]);
			}
		} else {
			destino.options[destino.options.length]=new Option(valor,valor);
		}
	} else {
		destino.innerHTML = unescape(valor.replace(/\+/g," ")); 
	}
}

function ajaxRun(){
	url = fila[ifila][0];
	destino = fila[ifila][1];
	xmlhttp.open("POST", url, true);
	xmlhttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=ISO-8859-1");
	xmlhttp.setRequestHeader("Cache-Control", "no-store, no-cache, must-revalidate");
	xmlhttp.setRequestHeader("Cache-Control", "post-check=0, pre-check=0");
	xmlhttp.setRequestHeader("Pragma", "no-cache");
	xmlhttp.onreadystatechange=function() {
		if (xmlhttp.readyState==4){
			switch(xmlhttp.status){
				case 200: { ajaxShow(xmlhttp.responseText,destino); break }
				case 204: { ajaxShow("O servidor não respondeu ao chamado",destino); break }
				case 400: { ajaxShow("Endereço inválido",destino); break }
				case 403: { ajaxShow("Você não possui permissão para acessar esse arquivo",destino); break }
				case 404: { ajaxShow("Arquivo não encontrado",destino); break }
				case 500: { ajaxShow("Erro interno do servidor...",destino); break }
				case 502: { ajaxShow("Servidor ocupado.",destino); break }
				case 503: { ajaxShow("O servidor não respondeu no tempo limite",destino); break }
				 default: { ajaxShow("Algum erro ocorreu ao carregar este conteúdo...",destino); break }
			}
			ifila++;
			if(ifila<fila.length)setTimeout("ajaxRun()",20);
		}
	}
	xmlhttp.send(url);
}

function ajaxForm(f, url, destino){
	if(f!=Object){ f = document.getElementById(f); };
	var query=url;
	for (i=0;i<f.elements.length;i++){
		query += i==0 ? '?' : '&';
		query += f.elements[i].name + '=' + f.elements[i].value;
	}
	ajaxLoad(query, destino);
}

no campo do form eu coloco

 

onblur="java script:ajaxForm('formCadastro','verifica_patrocinador.asp','MostraPatrocinador'); return false;"

Como disse esta função esta funcionando no IE, mas não funciona no FF, apesar de estar referenciaod no inicio do código Ajax os elementos

 

 

try{
	xmlhttp = new XMLHttpRequest();
}catch(ee){
	try{
		xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
	}catch(e){
		try{
			xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
		}catch(E){
			xmlhttp = false;
		}
	}
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Abra o Console de Erros do FF ( Ferramentas -> Console de Erros ) e veja oq o FF acusa de erro..

 

Abraços..

Compartilhar este post


Link para o post
Compartilhar em outros sites

Opa fera, o erro é

 

f is null, na linha 80 e na linha 80 temo o seguinte código

for (i=0;i<f.elements.length;i++){

O estranho é que o FF diz que é nulo, mas como funciona no IE?

Compartilhar este post


Link para o post
Compartilhar em outros sites

No document.getElementById você não guarda um array de elementos !

Afinal, não podem haver vários elementos com o mesmo id na mesma página !

Se você quer chamar pela classe ou outra coisa não será possível utilizar document.getElementById

Compartilhar este post


Link para o post
Compartilhar em outros sites

Obrigado pelas ajudas pessoal, achei o erro, podem me mandar para aquele lugar, hehhe, o erro ela comm Case Sencetive, o ID do formulário estava iniciando com Letra amiuscula e eu digitei na chamada em minusculo, ve se pode, mas foi com a dica do DarkDemo abrindo o console de erros do FF que eu achei o erro.

 

Valei galera

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.