Jump to content

POWERED BY:

Archived

This topic is now archived and is closed to further replies.

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):

Share this post


Link to post
Share on other 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...

Share this post


Link to post
Share on other 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

Share this post


Link to post
Share on other 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...

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other 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.

Share this post


Link to post
Share on other 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>

Share this post


Link to post
Share on other 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

Share this post


Link to post
Share on other 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!!!!

Share this post


Link to post
Share on other 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...

Share this post


Link to post
Share on other 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.

Share this post


Link to post
Share on other 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...

Share this post


Link to post
Share on other 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?

Share this post


Link to post
Share on other sites

Poxa micox, assina meu mouse pad? hUhauahAUHAPendurado :)

Share this post


Link to post
Share on other 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

Share this post


Link to post
Share on other 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

Share this post


Link to post
Share on other sites

×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.