Ir para conteúdo

POWERED BY:

Arquivado

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

ronanlumb

Imcompatibilicade Funções Micox e Pita?

Recommended Posts

Ola gente. Bem estou utilizando as funções no meu site

 

 

AJAX para páginas do MICOX: http://forum.imasters.com.br/index.php?showtopic=172859

AJAX para formulários do PITA: http://forum.imasters.com.br/index.php?showtopic=174729

 

É que meu site está funcionando da seguinte maneira. Quando eu clico em alguma notícia, eu atulizo o conteído da DIV utilizando a função do MICOX fazendo com que na DIV abra outra pagina onde aparece toda a notícias e os comentários.

 

Em baixo dos comentários estou utilizando a função do PITA, para atulizar a div onde aparece os comentários.

 

As funções funcionam mas se eu clicar em enviar na função do PITA, uma vez. Ele envia. Mas se após eu tentar submeter outra vez o formulário ela já não funciona.

 

Fica carregando eternamente.

 

meu fonte ajax.js

var ifila = 0var fila = new Array();//fila[X][0] - Div onde sera carregada a pagina//fila[X][1] - Pagina que sera chamada//fila[X][2] - Metodo de envio//fila[X][3] - Campos do form concatenados no padrao para serem enviados. Null caso seja um link//INICIALIZA O OBJETO QUE IRA FAZER AS SOLICITACOEStry{	xmlhttp = new XMLHttpRequest();// Mozilla, Safari, Firefox, etc...	try {		if (xmlhttp.overrideMimeType) {			//Se possível, ignora cabecalho usado pelo servidor e forca o padrao "text/xml". Alguns navegadores exigem esse padrao e pode dar erro se o servidor nao utilizar ele			xmlhttp.overrideMimeType('text/xml');		}	} catch (e1) { }}catch(e2){	try{		xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");// Internet Explorer	}catch(e3){		try{			xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");// Internet Explorer		}catch(e4){			//tratamento para alguma outra forma de implementar XMLHTTP			xmlhttp = false;		}	}}if (!xmlhttp){	//Nao conseguiu instanciar o objeto xmlhttp para fazer as solicitacoes	alert("AJAX error. Your browser must support XMLHttpRequest object or enable use of scripting.");}//GUARDA NA FILA O ID DO OBJETO E O FORM QUE SERAO CARREGADOS PELO LINK CLICADOfunction ajaxForm(id_target,id_form){	//Pega a pagina que sera chamada pelo form	var url = document.getElementById(id_form).action;	//Busca metodo de envio definido no form   	var metodoEnvio = document.getElementById(id_form).method.toUpperCase();	//Busca os elementos do form que serao enviados para a pagina solicitada	var elementos_form = BuscaElementosForm(id_form);	//Exibe mensagem de que esta carregando a pagina no objeto de ID informado	ajaxMensagemCarregando(id_target);	//Adiciona a solicitacao na fila	fila[fila.length]=[id_target,url,metodoEnvio,elementos_form];	//Se nao tem conexoes na fila, inicia a execucao	if(fila.length==1){		ajaxRun();	}	return;}function ajaxMensagemCarregando(id){	document.getElementById(id).innerHTML = "<br /><br /><br />Carregando...<br /><img src='im/load.gif'>";}function BuscaElementosForm(idForm) {	var elementosFormulario = document.getElementById(idForm).elements;	var qtdElementos = elementosFormulario.length;	var queryString = "";	var elemento;	//Cria uma funcao interna para concatenar os elementos do form	this.ConcatenaElemento = function(nome,valor) {								if (queryString.length>0) {									queryString += "&";								}								queryString += encodeURIComponent(nome) + "=" + encodeURIComponent(valor);							 };	//Loop para percorrer todos os elementos	for (var i=0; i<qtdElementos; i++) {		//Pega o elemento		elemento = elementosFormulario[i];		if (!elemento.disabled) {			//Trabalha com o elemento caso ele nao esteja desabilitado			switch(elemento.type) {				//Realiza a acao dependendo do tipo de elemento				case 'text': case 'password': case 'hidden': case 'textarea':					this.ConcatenaElemento(elemento.name,elemento.value);					break;				case 'select-one':					if (elemento.selectedIndex>=0) {						this.ConcatenaElemento(elemento.name,elemento.options[elemento.selectedIndex].value);					}					break;				case 'select-multiple':					for (var j=0; j<elemento.options.length; j++) {						if (elemento.options[j].selected) {							this.ConcatenaElemento(elemento.name,elemento.options[j].value);						}					}					break;				case 'checkbox': case 'radio':					if (elemento.checked) {						this.ConcatenaElemento(elemento.name,elemento.value);					}					break;			}		}	}			return queryString;}//EXECUTA A PROXIMA SOLICITACAO DA FILAfunction ajaxRun(){	var url = fila[ifila][1];	//Define o metodo de envio (GET ou POST)	var metodoEnvio;	if (fila[ifila][3]==null){		//Se for Link, utiliza GET		metodoEnvio = "GET";	}else{		//Se for Form, define o metodo de envio e prepara a url		metodoEnvio = fila[ifila][2];		if (metodoEnvio=="" || metodoEnvio==null){			//Se nao tiver definido nada, usa POST			metodoEnvio = "POST";		}		if (metodoEnvio=="GET"){			//Metodo GET passa as informacoes na linha da url			url = url + "?" + fila[ifila][3];		}	}	//Abre a conexao	xmlhttp.open(metodoEnvio,url,true);	//Seta as funcoes que irao tratar a mudanca de estado do objeto XMLHTTP	xmlhttp.onreadystatechange=ajaxXMLHTTP_StateChange;	//Executa a solicitacao	if (metodoEnvio=="POST"){		//Metodo POST precisa definir este RequestHeader		xmlhttp.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');		//Metodo POST passa as variaveis pelo metodo Send		xmlhttp.send(fila[ifila][3]);	}else{		xmlhttp.send(null);	}	return;}//FUNCAO EXECUTADA QUANDO ALTERAR O STATUS DA SOLICITACAO (readyState)function ajaxXMLHTTP_StateChange() {	//0-Nao inicializado, 1-Carregando, 2-Carregado, 3-Interativo, 4-Completo	if (xmlhttp.readyState==1){		ajaxXMLHTTP_StateChange_Carregando(fila[ifila][0]);//Quando iniciar a solicitacao	}else{		if (xmlhttp.readyState==4){			ajaxXMLHTTP_StateChange_Completo(xmlhttp, fila[ifila][0]);//Quando estiver completa a solicitacao		}	}}//FUNCAO EXECUTADA QUANDO INICIAR A SOLICITACAO (readyState=1)function ajaxXMLHTTP_StateChange_Carregando(id){	//Exibe mensagem de que está carregando a página no objeto de ID que solicitacao esta sendo feita	ajaxMensagemCarregando(id);	return;}//FUNCAO EXECUTADA QUANDO A SOLICITACAO ESTIVER COMPLETA (readyState=4)function ajaxXMLHTTP_StateChange_Completo(xmlhttp, id){	var retorno;	//Verifica o status da pagina de retorno	if (xmlhttp.status == 200 || xmlhttp.status==0) {		//Caso o status seja 200(Sucesso) ou nao utilize servidor(chamada local [C:\...]), trata o valor retornado		retorno=unescape(xmlhttp.responseText.replace(/\+/g," "));	}else{		//Caso o status ainda nao foi tratado, chama a funcao de tratamento de pagina de erro		retorno=ajaxPaginaErro(xmlhttp);	}	//Exibe o valor retornado no objeto de ID informado	document.getElementById(id).innerHTML=retorno;	// executa scripts	ExtraiScript(retorno);	//passa para a proxima posicao da fila	ifila++;	if(ifila<fila.length){		//Caso tenha mais solicitacoes na fila, executa a proxima		setTimeout("ajaxRun()",20);	}else{		//Caso nao tenha mais solicitacoes na fila, reinicia a fila		fila = null;		fila = new Array();		ifila = 0;	}	return;}//FUNCAO PARA RETORNAR A MENSAGEM DE ERRO QUANDO O SERVIDOR RETORNAR UMA PAGINA DE ERROfunction ajaxPaginaErro(xmlhttp){	var retorno;	switch (xmlhttp.status) {		case 404:			return "Página não encontrada!!!";			break;		case 500:			return "Erro interno do servidor!!!";			break;		default:			return "Erro desconhecido!!!<br>" + xmlhttp.status + " - " + xmlhttp.statusText.replace(/\+/g," ");	}}function ajaxGet(url,elemento_retorno,exibe_carregando,mm){/******* ajaxGet - Coloca o retorno de uma url em um elemento qualquer* Use a vontade mas coloque meu nome nos créditos. Dúvidas, me mande um email.* Versão: 1.1 - 10/04/2006* Autor: Micox - micoxjcg@yahoo.com.br* Parametros:* url: string; elemento_retorno: object||string; exibe_carregando:boolean*  - Se elemento_retorno for um elemento html (inclusive inputs e selects),*	exibe o retorno no innerHTML / value / options do elemento*  - Se elemento_retorno for o nome de uma variavel*	(o nome da variável deve ser declarado por string, pois será feito um eval)*	a função irá atribuir o retorno à variável ao receber a url.*******/   	var ajax1 = pegaAjax();	if(ajax1){		url = antiCacheRand(url)		ajax1.onreadystatechange = ajaxOnReady		ajax1.open("GET", url ,true);		ajax1.setRequestHeader("Cache-Control", "no-cache");		ajax1.setRequestHeader("Pragma", "no-cache");		if(exibe_carregando){ put("<br /><br /><br />Carregando...<br /><img src='im/load.gif'>"); }		ajax1.send(null)		return true;	}else{		return false;	}	function ajaxOnReady(){		if (ajax1.readyState==4){			if(ajax1.status == 200){				var texto=ajax1.responseText;				if(texto.indexOf(" ")<0) texto=texto.replace(/\+/g," ");				//texto=unescape(texto); //descomente esta linha se tiver usado o urlencode no php ou asp				put(texto);			}else{				if(exibe_carregando){put("Falha no carregamento. " + httpStatus(ajax1.status));}			}			ajax1 = null		}else if(exibe_carregando){//para mudar o status de cada carregando				put("<br /><br /><br />Carregando...<br /><img src='im/load.gif'>");			 }	}	function put(valor){ //coloca o valor na variavel/elemento de retorno		if((typeof(elemento_retorno)).toLowerCase()=="string"){ //se for o nome da string			if(valor!="Falha no carregamento"){				eval(elemento_retorno + '= unescape("' + escape(valor) + '")')			}		}else if(elemento_retorno.tagName.toLowerCase()=="input"){			valor = escape(valor).replace(/\%0D\%0A/g,"")			elemento_retorno.value = unescape(valor);		}else if(elemento_retorno.tagName.toLowerCase()=="select"){					select_innerHTML(elemento_retorno,valor)		}else if(elemento_retorno.tagName){			elemento_retorno.innerHTML = valor;			//alert(elemento_retorno.innerHTML)		}   			}	function pegaAjax(){ //instancia um novo xmlhttprequest		//baseado na getXMLHttpObj que possui muitas cópias na net e eu nao sei quem é o autor original		if(typeof(XMLHttpRequest)!='undefined'){return new XMLHttpRequest();}		var axO=['Microsoft.XMLHTTP','Msxml2.XMLHTTP','Msxml2.XMLHTTP.6.0','Msxml2.XMLHTTP.4.0','Msxml2.XMLHTTP.3.0'];		for(var i=0;i<axO.length;i++){ try{ return new ActiveXObject(axO[i]);}catch(e){} }		return null;	}	function httpStatus(stat){ //retorna o texto do erro http		switch(stat){			case 400: return "400: Solicitação incompreensível"; break;			case 403: case 404: return "404: Não foi encontrada a URL solicitada"; break;			case 405: return "405: O servidor não suporta o método solicitado"; break;			case 500: return "500: Erro desconhecido de natureza do servidor"; break;			case 503: return "503: Capacidade máxima do servidor alcançada"; break;			default: return "Erro " + stat + ". Mais informações em http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html"; break;		}	}	function antiCacheRand(aurl){		var dt = new Date();		if(aurl.indexOf("?")>=0){// já tem parametros			return aurl + "&" + encodeURI(Math.random() + "_" + dt.getTime());		}else{ return aurl + "?" + encodeURI(Math.random() + "_" + dt.getTime());}	}}function select_innerHTML(objeto,innerHTML){/******* select_innerHTML - altera o innerHTML de um select independente se é FF ou IE* Corrige o problema de não ser possível usar o innerHTML no IE corretamente* Veja o problema em: http://support.microsoft.com/default.aspx?scid=kb;en-us;276228* Use a vontade mas coloque meu nome nos créditos. Dúvidas, me mande um email.* Versão: 1.0 - 06/04/2006* Autor: Micox - Náiron José C. Guimarães - micoxjcg@yahoo.com.br* Parametros:* objeto(tipo object): o select a ser alterado* innerHTML(tipo string): o novo valor do innerHTML*******/	objeto.innerHTML = ""	var selTemp = document.createElement("micoxselect")	var opt;	selTemp.id="micoxselect1"	document.body.appendChild(selTemp)	selTemp = document.getElementById("micoxselect1")	selTemp.style.display="none"	if(innerHTML.toLowerCase().indexOf("<option")<0){//se não é option eu converto		innerHTML = "<option>" + innerHTML + "</option>"	}	innerHTML = innerHTML.replace(/<option/g,"<span").replace(/<\/option/g,"</span")	selTemp.innerHTML = innerHTML	for(var i=0;i<selTemp.childNodes.length;i++){		if(selTemp.childNodes[i].tagName){			opt = document.createElement("OPTION")			for(var j=0;j<selTemp.childNodes[i].attributes.length;j++){				opt.setAttributeNode(selTemp.childNodes[i].attributes[j].cloneNode(true))			}			opt.value = selTemp.childNodes[i].getAttribute("value")			opt.text = selTemp.childNodes[i].innerHTML			if(document.all){ //IEca				objeto.add(opt)			}else{				objeto.appendChild(opt)			}							}		}	document.body.removeChild(selTemp)	selTemp = null}

Chamando a função do PITA : OBS estou usando o smarty

<div id="postarcomentario2"> <div id="postarcomentario">  <div class="titulo_form_comentario">{$geral_comentario.l_deixe_comentario}</div>	<div id="postarcomentariof">		   <form id="formulario" name="formulario" method="POST" action="posta_comentario.php" onSubmit='return false;' ><textarea name=texto rows="10" id="texto" cols="70" class="frm" onMouseOver="this.className='frm-on';" onMouseOut="this.className='frm';" onblur="java script:envia('verifica_string.php','POST',false);"></textarea><input type="hidden" name="id_a" id="id_a" value="{$noticia.id}">			<input type="hidden" name="nome_u" id="nome_u" value="RCLumbriga"><br />				<input type="submit" name="enviar" id="enviar" value="{$geral_comentario.l_enviar}" onClick='ajaxForm("postarcomentario2","formulario"); return false' class="frm" onMouseOver="this.className='frm-on';" onMouseOut="this.className='frm';">		</form>		</div>	 </div></div>

Chamando o AJAX.js na pagina principal

<meta http-equiv="Content-Language" content="pt-br"><meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><meta http-equiv="Content-Style-Type" content="text/css"><script src="ajax.js?12" type="text/javascript" language="javascript"></script>

Compartilhar este post


Link para o post
Compartilhar em outros sites

você está utilizando o Ajaxform que eu criei e o AjaxGet do MicoX??acho que vai precisar fazer uns ajustes para elas conversarem

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.