micox 2 Report post Posted April 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): Share this post Link to post Share on other sites
micox 2 Report post Posted April 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... Share this post Link to post Share on other sites
pa_bruno 0 Report post Posted April 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 Share this post Link to post Share on other sites
micox 2 Report post Posted April 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... Share this post Link to post Share on other sites
pa_bruno 0 Report post Posted April 7, 2006 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
micox 2 Report post Posted April 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. Share this post Link to post Share on other sites
micox 2 Report post Posted April 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> Share this post Link to post Share on other sites
Hedi 2 Report post Posted April 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 Share this post Link to post Share on other sites
pearljam 0 Report post Posted April 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!!!! Share this post Link to post Share on other sites
micox 2 Report post Posted April 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... Share this post Link to post Share on other sites
imleet 0 Report post Posted April 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 ><" Share this post Link to post Share on other sites
micox 2 Report post Posted April 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. Share this post Link to post Share on other sites
micox 2 Report post Posted April 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... Share this post Link to post Share on other sites
crucifier 0 Report post Posted May 17, 2006 continua dando o mesmo err o.o Share this post Link to post Share on other sites
micox 2 Report post Posted May 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? Share this post Link to post Share on other sites
Fleury 3 Report post Posted May 24, 2006 Poxa micox, assina meu mouse pad? hUhauahAUHAPendurado :) Share this post Link to post Share on other sites
micox 2 Report post Posted May 24, 2006 haheheuh. Os cara curte da minha cara véi... . heuehue Share this post Link to post Share on other sites
fael 1 Report post Posted May 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 Share this post Link to post Share on other sites
fael 1 Report post Posted May 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 Share this post Link to post Share on other sites