micox 2 Denunciar post Postado Abril 6, 2006 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
micox 2 Denunciar post Postado Abril 7, 2006 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
pa_bruno 0 Denunciar post Postado Abril 7, 2006 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
micox 2 Denunciar post Postado Abril 7, 2006 - 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
pa_bruno 0 Denunciar post Postado Abril 7, 2006 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
micox 2 Denunciar post Postado Abril 8, 2006 tb naum sou taum cabeção assim nehaheuha 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
micox 2 Denunciar post Postado Abril 10, 2006 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
Hedi 2 Denunciar post Postado Abril 12, 2006 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
pearljam 0 Denunciar post Postado Abril 13, 2006 ó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
micox 2 Denunciar post Postado Abril 14, 2006 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
imleet 0 Denunciar post Postado Abril 15, 2006 olha micox, aqui n funcionou essa sua função dá esse erro: Falha no carregamento. Erro 0. Mais informações em http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html, dentro da textarea e do input.... EDIT-------- agora ta OK parece q o erro era no localhost ><" Compartilhar este post Link para o post Compartilhar em outros sites
micox 2 Denunciar post Postado Abril 17, 2006 É, 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
micox 2 Denunciar post Postado Abril 20, 2006 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
crucifier 0 Denunciar post Postado Maio 17, 2006 continua dando o mesmo err o.o Compartilhar este post Link para o post Compartilhar em outros sites
micox 2 Denunciar post Postado Maio 17, 2006 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
Fleury 3 Denunciar post Postado Maio 24, 2006 Poxa micox, assina meu mouse pad? hUhauahAUHAPendurado :) Compartilhar este post Link para o post Compartilhar em outros sites
micox 2 Denunciar post Postado Maio 24, 2006 haheheuh. Os cara curte da minha cara véi... . heuehue Compartilhar este post Link para o post Compartilhar em outros sites
fael 1 Denunciar post Postado Maio 25, 2006 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 2 Denunciar post Postado Maio 25, 2006 É nóis... Compartilhar este post Link para o post Compartilhar em outros sites
fael 1 Denunciar post Postado Maio 25, 2006 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