Ir para conteúdo

Arquivado

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

micox

[Resolvido] [Dica] Função rápida pra AJAX

Recommended Posts

Seus problemas acabaram!!

 

Taí uma funçãozinha desenvolvida por mim que simplifica pra caramba o uso do ajax.

 

- Voce não precisa se preocupar com ficar instanciando ou coisa parecida. É só chamar a ajaxGet.

- Carrega também scripts javascript que vieram por ajax (exceto funções). Créditos para o skywalker.TO.

- Permite que voce carregue mais de um elemento ao mesmo tempo assincronamente.

- Permite que voce jogue o resultado da url em:

> uma variável javascript,

> diretamente no innerHTML de um elemento,

> em um input

> em um select sem se preocupar com nada.

- Você não precisa mais ficar se preocupando com a questão do cache.

 

Versão atual: 1.2 . Versão atual no post 13.

 

Forma de uso: (exemplos de uso no post post 7.)

ajaxGet( sua_pagina [string] , variavel_ou_objeto_que_recebera_o_retorno [string ou object] , exibe_texto_carregando_ou_nao [true ou false])

 

Se os moderas quiserem colocar no Laboratório de Scripts... É que resolvi postar aqui no ajax pro povo daqui ver e testar.

Pra usar é só chamar a ajaxGet.

 

Também publiquei esta solução no meu blog sobre webstandards, ajax, javascript, etc.

 

Testem ae e comentem o que acharem. Se for bom, usem. Se acharem bugs, avisem. Só peço que coloquem meu nome nos credits... Eu testei com sucesso no IE6 e no FF1.5 em dois computadores diferentes.

 

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

Histórico de alterações

 

EDITADO 1: Já achei um bug no select do IE (Veja aqui a descrição do bug). Vou corrigir e já posto novamente, o problema é que isso tá difícil. Se alguém tiver alguma solução e quiser contribuir...

 

EDITADO 2: Versão atualizada no Post 2

 

EDITADO 3: Dei uma melhorada neste post inicial aqui pra ficar mais fácil de saber as funcionalidades do meu script.

 

EDITADO 4: Nova versão no post 7. Melhorei o retorno de erros pra melhorar o debug e fiz uma forma de não cachear a página.

 

EDITADO 5: Versão 1.2 no post 13. Adicionei o controle de erros para o ajax.status=0 e tratamento interpretar scripts que venham junto com a página (créditos para o Skywalker.TO):

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ae povo.

 

Deu um #@?$%~ trabalho corrigir o bug do innerHTML para selects do IE, porém com isso criei mais uma função que será útil pra todo mundo. Fiquei 2 dias trabalhando pra corrigir este bug do IE e não ví nada na net parecido, por isso peço que, se forem usa-la, pelo menos deixem meus nomes no script.

A função que te permite colocar um innerHTML no select chama-se select_innerHTML e tá abaixo da ajaxGet (testado no IE6 e FF1.5):

 

Melhorei também pra que exiba o dado no select mesmo se a página de retorno não for formada só por options.

 

Agora a nova função do ajax corrigida:

micoxAjax.js

function ajaxGet(url,elemento_retorno,exibe_carregando){/****** * 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.0 - 06/04/2006* Autor: Micox - Náiron José C. Guimarães - 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){		ajax1.onreadystatechange = ajaxOnReady		ajax1.open("GET", url ,true);		if(exibe_carregando){ put("Carregando ...")	}		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");}			}			ajax1 = null		}else if(exibe_carregando){//para mudar o status de cada carregando				put("Carregando ..." )		}	}	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 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}
Exemplo de utilização:

 

teste.htm

<style>div {border:3px solid red; margin:10px; float:left; width:200px; height:200px; overflow:scroll;}</style><script src="micoxAjax.js"></script><script language="javascript">function teste(){	ajaxGet("http://localhost/options.htm",document.getElementById("div1"),true)	ajaxGet("http://localhost/options.htm","document.getElementById('div2').innerHTML",false)		ajaxGet("http://localhost/options.htm",document.getElementById("input1"),false)	ajaxGet("http://localhost/options.htm",document.getElementById("select1"),true)}</script><div id="div1"> var receber o innerHTML</div><div id="div2"> Vai receber da variável </div><input type="text" id="input1"  value="vai receber o value"/><select id="select1">	<option>Vai receber o select</option></select><br /><button onclick="teste()">Vai</button>
Por favor, testem em outros navegadores e postem o resultado, e se gostaram ou não...

Compartilhar este post


Link para o post
Compartilhar em outros sites

soh corrige a primeira linha... que tah ajaxGeta... :Dcara... naum funcinou de novo... aparece o carregando e falaha no carregamento no div1 e o combo tb naum pega nada...testei no FF 1.5, i.e. 6 e o Opera 8.54

Compartilhar este post


Link para o post
Compartilhar em outros sites

- Permite que voce carregue mais de um elemento ao mesmo tempo assincronamente.

haehahe. É isso mesmo, quer dizer que ele não achou o arquivo http://localhost/options.htm. Sacou??Voce tem que colocar pra baixar um arquivo válido que exista no seu servidor.

soh corrige a primeira linha... que tah ajaxGeta...

Puts. é mesmo. Já corrigi, valeus...

Compartilhar este post


Link para o post
Compartilhar em outros sites

p**** micox... tb naum sou taum cabeção assim neh... logico q eu mudei os arquivos... auhuahauhuahua... mesmo mudando continua... ;)

Compartilhar este post


Link para o post
Compartilhar em outros sites

tb naum sou taum cabeção assim neh

aheuha uah eha :)Ou. Acabei de testar aqui em casa no FF1.5 e no IE6 e deu tudo belezão!!!PS.: Antes eu tinha testado no serviço.Vou fazer o seguinte. Vou mudar o esquema do tratamento de erros pragente saber qual erro específico tá dando e não exiba apenas o "Falha no carregamento". Já já eu posto.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Nova versão 1.1. Adicionei função pra impedir o cache pelo browser e melhorei o retorno de erros.

 

Arquivo micoxAjax.js (contém a função ajaxGet)

function ajaxGet(url,elemento_retorno,exibe_carregando){/****** * 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("Carregando ...")	}		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("Carregando ..." )		}	}	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}
Arquivo teste.htm (é a página que contém os divs que receberão o conteúdo carregado por ajax. Serve só pra exemplificar o uso. É lógico que você usará sua própria página.)

<style>div {border:3px solid red; margin:10px; float:left; width:200px; height:200px; overflow:scroll;}micoxselect {border:1px solid black;}micoxselect moption {border:1px solid red;}</style><script src="engine/micoxAjax.js?12" type="text/javascript" language="javascript"></script><script language="javascript">function pega(quem){ return document.getElementById(quem)}function teste(){	ajaxGet("http://localhost/lojavirtualfree/optionas.htm",document.getElementById("div1"),true)	ajaxGet("http://localhost/lojavirtualfree/optionas.htm","document.getElementById('div2').innerHTML",false)		ajaxGet("http://localhost/lojavirtualfree/optionas.htm",document.getElementById("input1"),false)		ajaxGet("http://localhost/lojavirtualfree/optionas.htm?viva",document.getElementById("select1"),true)	//alert(document.getElementById("select1").innerHTML)}</script><div id="div1"> var receber o innerHTML</div><div id="div2"> Vai receber da variável </div><input type="text" id="input1"  value="vai receber o value"/><select id="select1" name="select1">	<option>Vai receber o select</option>	<option>Vai receber o select</option></select><br /><button onclick="teste()">Vai</button>
Optionas.htm (Página que será puxada pelo ajax e jogada nas divs. Serve só para o exemplo. É claro que você usará sua própria página.)

Autor: Micox - <br /> <strong>micoxjcg@yahoo.com.br</strong>

Compartilhar este post


Link para o post
Compartilhar em outros sites

esta true sim vejam, tem que estar false?:

 

<script src="ajax.js" language="javascript" type="text/javascript"></script><script>function ler() {objeto = new cria;   objeto.open("GET", "ler_chat.php", true);   objeto.onreadystatechange = function() {	  // if(objeto.readyState == 2){		 parent.document.getElementById("car").innerHTML= '<img src="carregando.gif" width="22" height="22">'; 	  // }else{		// document.getElementById("car").innerHTML= "";	  // }	 if(objeto.readyState == 4) {	if(objeto.status == 200) {	 		parent.document.getElementById("car").innerHTML= "";			document.getElementById("mostrar").innerHTML= objeto.responseText; 	 } else {	   alert("Falha: " + objeto.statusText);	}	 }   }   objeto.send(null);   setTimeout("ler()",1500);}

valews

Compartilhar este post


Link para o post
Compartilhar em outros sites

ótima funcao cara... parabéns...... só tem uma coisa....tem um site meu que carrego um <? include topo.php ?> .. nesse include eu carrego um player de audio.. windows media player... abaixo tem os links para as secoes do site... o que eu queria... era que quando eu clicasse nos links para as secoes.... o player nao parasse de rodar, que o cliente navegasse pelo site ouvindo o som sem parar. com o IEca... o player pára de rodar... com o FF ele nao pára.... tem alguma ideia do pq????valeu!!!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom perljam, essa dúvida ae não tem a ver com minha função, nem tem a ver diretamente com ajax(apesar de ser uma das soluções). Pra fazer isso, você não pode recarregar o local onde tá o seu player. E pra não recarregar este local, você tem 3 opções:1) Deixar o player em outra janela ou em uma popup;2) Usar frames e deixar o player em outro frame (ou iframe);3) Usar ajax e recarregar apenas o restante do site, deixando seu player quieto (eu não acho esta solução boa)PS.: Se algum moderador conseguir quebrar essa dúvida em um novo post seria melhor...

Compartilhar este post


Link para o post
Compartilhar em outros sites

É, valeu por me mostrar um erro que eu ainda não tinha previsto (que é o erro 0).Ele dá quando não se utiliza o script corretamente, ou quando você tenta fazer coisas que o navegador não permite (como tentar abrir uma url que não está no mesmo domínio do script).Daí o ajax1.status acaba sendo 0.Vou corrigir e já posto algo.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Versão nova : 1.2.

 

Adicionei o controle de erros para o ajax.status=0 e tratamento interpretar scripts que venham junto com a página (créditos para o Skywalker.TO):

 

function ajaxGet(url,elemento_retorno,exibe_carregando){/****** * 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.2 - 20/04/2006* Autor: Micox - Náiron José C. Guimarães - 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("Content-Type", "text/html; charset=iso-8859-1");//"application/x-www-form-urlencoded");		ajax1.setRequestHeader("Cache-Control", "no-cache");		ajax1.setRequestHeader("Pragma", "no-cache");		if(exibe_carregando){ put("Carregando ...")	}		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);				extraiScript(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("Carregando ..." )		}	}	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 0: return "Erro desconhecido de javascript";			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}function extraiScript(texto){//Maravilhosa função feita pelo SkyWalker.TO do imasters/forum//http://forum.imasters.com.br/index.php?showtopic=165277&	// inicializa o inicio ><	var ini = 0;	// loop enquanto achar um script	while (ini!=-1){		// procura uma tag de script		ini = texto.indexOf('<script', ini);		// se encontrar		if (ini >=0){			// define o inicio para depois do fechamento dessa tag			ini = texto.indexOf('>', ini) + 1;			// procura o final do script			var fim = texto.indexOf('</script>', ini);			// extrai apenas o script			codigo = texto.substring(ini,fim);			// executa o script			//eval(codigo);			/**********************			* Alterado por Micox - micoxjcg@yahoo.com.br			* Alterei pois com o eval não executava funções.			***********************/			novo = document.createElement("script")			novo.text = codigo;			document.body.appendChild(novo);		}	}}

PS.: Por favor, não apaguem os créditos a mim e ao skywalker quando usarem as funções. Um pouco de ética é bom...

Compartilhar este post


Link para o post
Compartilhar em outros sites

O erro geralmente acontece quando voce tenta executar o ajax a partir do sistema de arquivos locais. Sem upar ele pra nenhum servidor (pode ser servidor local que funciona também).É seu caso crucifier?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Poxa micox, assina meu mouse pad? hUhauahAUHAPendurado :)

Compartilhar este post


Link para o post
Compartilhar em outros sites

e dae micox http://forum.imasters.com.br/public/style_emoticons/default/worshippy.gif

 

Estou usando o seu "framework" e estou com um certo probleminha: acentuação!!!

 

Por exemplo: a palavra aplicação está aparecendo assim Aplica?

 

Sabe como resolver?

 

Resolvi!!! Vi seu outro post!! Valeu! http://forum.imasters.com.br/public/style_emoticons/default/worshippy.gif

Compartilhar este post


Link para o post
Compartilhar em outros sites

micox,

 

Encontrei alguns problemas com o seu framework na questão cache... Não é sempre que ocorre, somente em alguns casos. Daí encontrei a solução! Você tem que colocar outros setRequestHeaders.

 

Ex.

ajax1.setRequestHeader("Cache-Control", "no-store, no-cache, must-revalidate");ajax1.setRequestHeader("Cache-Control", "post-check=0, pre-check=0");ajax1.setRequestHeader("Pragma", "no-cache");

http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif

 

flw

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.