|
| Publicidade |
|
|
|
Comentários de Usuários
Duvida
Legal artigo! Mas o meu não ta funcionando... vc tem algum endereço rodando isso pra dar uma olhada como fica???
Grato Leandro Maniezo
Auto - Save
Muito interessante o artigo, apesar do exemplo nao ter funcionado. Estava justamente lendo sobre esse objeto XMLHTTP.
Estou tentando fazer um tipo AUTO SAVE. O colunista vai escrevendo sua materia no TEXTAREA e o XMLHTTP vai enviando pro servidor para ir salvando no BD. Alguem tem alguma ideia de como fazer isso? Abracos.
XP sux!
O problema é que no Window$ XP(ie6 + SP2) o código é bloqueado como "script malicoso"....
[]'s
sp2
Bem, mas estou sem o SP2.
Eu sei que o GMAIL usa e muito essa 'tecnologia'.
Problemas no exemplo do artigo
Existem alguns ajustes a serem feitos para que o exemplo funcione...
Na linha do script.js: function buscarNoticias(obj) deve-se colocar: function buscarNoticias() já que obj não é utilizado. Na linha do script.js: setInterval("Teste()", 60000); deve-se colocar: setInterval("buscarNoticias()", 60000); Além de não esquecer de realizar a conexão corretamente ao banco de dados e não esquecer de selecionar uma base de dados!
Excelente!
Excelente artigo , muito útil e de extrema importância.
Há muito tempo pesquiso sobre esse assunto mas não estava obtendo sucesso...mas agora este artigo abriu uma gama de possibilidades para meus projetos PHP+MySQL+Javascript...
intervalo
No script PHP fiz um print rand(), porem a chamada a cada tempo de intervalo nao esta funcionando. O JS soh esta chamando uma vez o PHP.
E alguem sabe como fazer o processo contrario? Quero ficar enviando o conteudo de um textarea a cada X segundos para o servidor.
Funciona !!!
Funciona , vou colocar isso no meu chat.
Servidor
com um setInterval() destes o servidor vai ficar louco!!! principalmente se chamar acesso a BD e ta... inda mais cada 6 ms.
Parabéns
Cara , era isso que eu precisava , util e diversas funcionalidades , já estou mudando boa parte dos meus sistemas...valeu
Comigo funcionou, mas tenho estas duvidas
Olá amigos,
Eu achei bastante interessante e efetuei alguns testes aqui, para simplificar tirei a parte de banco de dados e coloquei um conteudo fixo. Funcionou perfeitamente porem com as seguintes ressalvas. Eu deixei atualizando constantemente ou seja caso eu inclua alguma noticia no news.php ela deve aparece imediatamente. No mozilla funcionou perfeito, porem no IE nao é atualizado. Alguem poderia me ajudar? Vou colocar o conteudo dos arquivos aqui, lembrando que tirei o acesso ao MYSQL, o exemplo é com o conteudo fixo do arquivo news.php, eu queria apenas ver o funcionamento. O detalhe é que na tela aparece o refresh de apenas parte da tela como é o objetivo do artigo. Baixei o tempo de atualização. Ai vai os arquivos: *** ARQUIVO index.html *** <html> <script language="javascript" type="text/javascript" src="script.js"> </script> <h1> PAGINA ATUALIZADA SEM REFRESH </H1> <hr><br> <div id="news"></div> </html> *** ARQUIVO news.php *** <?php echo "<h1>"."16:00"." - "."PHP é a linguagem mais usada na net em 2004"."</h1>"; echo "<h1>"."17:00"." - "."PHP5 tem suporte a orientacao a objetos"."</h1>"; ?> *** ARQUIVO script.js *** var req; function loadXMLDoc(url) { req = null; // Procura por um objeto nativo (Mozilla/Safari) if (window.XMLHttpRequest) { req = new XMLHttpRequest(); req.onreadystatechange = processReqChange; req.open("GET", url, true); req.send(null); // Procura por uma versão ActiveX (IE) } else if (window.ActiveXObject) { req = new ActiveXObject("Microsoft.XMLHTTP"); if (req) { req.onreadystatechange = processReqChange; req.open("GET", url, true); req.send(); } } } function processReqChange() { // apenas quando o estado for "completado" if (req.readyState == 4) { // apenas se o servidor retornar "OK" if (req.status == 200) { // procura pela div id="news" e insere o conteudo // retornado nela, como texto HTML document.getElementById('news').innerHTML = req.responseText; } else { alert("Houve um problema ao obter os dados:\n" + req.statusText); } } } function buscarNoticias() { loadXMLDoc("./news.php"); } // Recarrega a cada 60000 milissegundo (60 segundos) setInterval("buscarNoticias()", 600);
Re:
Valeu Diego agora o meu funcionou tmb!!! Então pierrefreire acredito que esta acontecendo isso por causa do cache!!
Coloque isso no seu arquivo news.php: $now = gmdate('D, d M Y H:i:s') . ' GMT'; header('Expires: ' . $now); header('Last-Modified: ' . $now); header('Cache-Control: no-store, no-cache, must-revalidate'); // HTTP/1.1 header('Cache-Control: pre-check=0, post-check=0, max-age=0'); // HTTP/1.1 header('Pragma: no-cache'); // HTTP/1.0
Valeu Leandro
Valeu Leandro,
Era o cache mesmo, agora ficou perfeito.
Dúvida de Recorregamento
Ex. estou fazendo um forum para mim com varias coisas da minha necessidade , coloquei dentroi de um iframe para nao carregar toda a pagina e somente o iframe , se eu colocar o
setInterval("Teste()", 60000); dentro na minha pagina ela vai recarregar a cada 60 segundos , ou eu tenho que fazer algo diferente . vlw
Dúvida de Recorregamento
Esqueci no comentário acima, já pensei em fazer como um bate papo onde somente atualiza quando tiver uma nova mensagem ,só que não tenho a minima ideia de como faço isso, se alguem poder me sugerir algo fico agradecido.
Parabéns pelo artigo
O uso desse objeto caiu do céu para mim! Estava criando uma rotina para funcionar como "sonda" do Itaushopline em PHP (para conferir se a pessoa já pagou ou não) e estava precisando exatamente disto para funcionar.
Fiz algumas alterações, juntei com uma parser XML, e voilá!! Depois vou colocar nos scripts as rotinas para acessar o Itaushopline por PHP. Valeu mesmo!
AJAX - Ajax => Assynchronous Javascript And Xml
Veja esse tópico do Guilherme Blanco:
http://forum.wmonline.com.br/index.php?showtopic=116526
MÁGICA!!
MEU DEUS!! EH MAGICA!!!
funfo certinho fazenu as alterações q o Diego M. Medeiros de Araújo !! ja vejo um monte de possibilidades... nossa... muita coincidencia...tava procuranu uma coisa assim justo no dia q vi o artigo por acaso!!! parabens pelo artigo!! ;)
Caraca, véi!! Que doidêra!
Aê, tá massa essa idéia!
Vai tornar mais fácil a vida da gente. (ufa!!) Caraca!! Ainda tô embasbacado!! Esse negócio é demais pra minha cabeça de iniciante!!
Muito bom, muito bom...
Muito bom!
Precisava de um exemplo simplificado sobre isso! Tô gostando de ver a evolução dos programadores aqui do PHPBrasil... Cada vez + ...
Uma observação:
Tipo assim,
quando tentei testar no IEcat, me parece que ele ficava lendo o arquivo que estava em BUFF ou seja, eu tinha q apagar o temporary internet files para que a página fosse corretamente atualizada. O mesmo problema não aconteceu no Firefox, aonde a página foi atualizada normalmente e listada no intervalo certo de tempo. Funciona PERFEITAMENTE XD~~.
cool
legal cara!
já tinha usado um modo semelhante, mas só rolava no IE, usava o evento "ondatasetcomplete" e tratava o XML como um objeto RecordSet. Parabens! ;)
TOP D+++
Realmente as possibilidades de utilização desse script são muito amplas, e realmente funcionais, dão ao site uma cara mais profissional, huahuau
Só fiquei curioso do trein ai de naum funcionar no Ruindows XP SP2 :s Eu ainda nem testei ele, mas sei que é um item muito muito muito útil. Parabéns pelo artigo!
Plataforma ?
Muito legal esse esquema. Gostaria de saber se tem algum objeto similar para linux, já que isso é ActiveX, que é da MS.
Parabéns
Post Atrazado...
Obrigado a todos que gostaram do artigo.
Sinto muito pelo mal funcionamento do exemplo, mas eu escrevi meio correndo... Obrigado aos que detectaram os problemas e encontraram as soluções. Para solucionar algumas dúvidas que surgiram: - Não funcionou so IE SP2: Pois é. O SP2 veio para (na minha opinião) estragar o que estava bom no WinXP. Ele aumenta muito a segurança do IE, mas em compensação, fecha com muitas possibilidades. Como eu não uso SP2, não tive problemas com isso, mas para quem usa, creio que baixar o nível de segurança do IE deva resolver. - "Com um setInterval() desses o servidor vai ficar louco!": O setInterval está definido a cada 6*10000ms (60s). - "Existe uma possibilidade para linux, já que isto é ActiveX?": Há duas maneiras de chamar o XMLHttpRequest, uma (para IE) é via ActiveX, mas a outra (para Firefox e Safari) é via objeto nativo. Então, se você usa Firefox no seu Linux, ele usa a chamada "new XMLHttpRequest()". Valeu!
Parabens
E questao de carregamento de servidor?, ele se comprar a um metarefresh do html? .
Fico no aguardo e parabens mesmo pelo artigo.
muito bom
Muito bom o artigo. Eu testei e funcionou muito bem no winxp sp2. Eu utilizei para atualização de um gráfico, o que exige muito do servidor (linux). O mais interessante é que quando uso o gráfico não funciona remotamente no firefox do linux, somente no ie e firefox do windows (mas funciona no servidor linux). E se eu fizer uma cusulta a um banco de dados remoto nem abre a página... (inclusive no próprio servidor)
Firefox
gocorrea, tente atualizar o Firefox para a versão mais nova - no linux. Se não funcionar, o problema deve ser com o próprio código msm, pois deve estar padronizado segundo normas(formalização DOM) da www.w3c.org que já são implementadas nos melhores browsers(como o Firefox, claro!)
re: Firefox
Eu utilizo debian em casa e no meu servidor, de forma que as versões do firefox em cada um deles é a mesma e a mais nova. O codigo funciona muito bem no firefox do meu servidor, na minha rede interna e em qualquer pc com conexão de até uns 512kbps. Na minha casa que é 256 kbps não funciona no firefox, só no i.e. Se eu fazer com que o gráfico gerado seja um pouco mais pesado ele nem passa mais a abrir no i.e. Desta forma eu acho que o objeto XMLHttepRequest é mais "potente" no i.e. (eu também prefiro o firefox, mas fazer o que?) e esta relacionado com a velocidade da conexão e o tamanho da página. Mesmo assim, obrigado.
Sajax - Bem mais facil
Sajax é uma ferramenta para programar websites usando a AJAX framework — mais conhecido como XMLHTTPRequest ou programação remota — o mais fácil possível. Sajax facilita a chamada à funções de APS, Cold Fusion, Io, Lua, Perl, PHP, Python ou Ruby da sua página via JavaScript sem que seu navegador de um refresh. Esta ferramenta faz 99% do trabalho para você então não tem desculpas para não usar!
http://www.modernmethod.com/sajax/ Tutorial que postei Calculadora em Sajax - comentado http://www.babooforum.com.br/idealbb/view.asp?topicID=361684
Dar foco a janela...
Alguém sabe se tem como usar essa rotina para dar foco em um janela. Ex: Tenho uma lista de recados enviados pelo sistema, e cada vez que o numero de recados aumentar, mandar o foco para a janela do usuário...
tentei usar javascript no arquivo que busca no banco mas não deu certo... Alguém tem alguma sugestão???
Como acrescentar javascripts?
O script realmente é muito bom. Porém como fazer para executar javascripts dentro da página em PHP??? Por exemplo: if tal coisa = alert, else tal outra = pop up ?
Re: Como acrescentar javascripts?
MauroSp, naum entendi bem sua dúvida, mas não seria simplesmente:
<?php //script php ?> <script language="javascript"> alert('exemplo'); </script> <?php //continuação php ?> ?????????????
mais uma div
Quando o pierrefreire diz:
" // procura pela div id="news" e insere o conteudo " Seria possível criar uma outra div id="news1" no arquivo script.js ,que seria chamada assim <div id="news1"></div>, no arquivo index.html? Olha, eu bem que tentei mas naum consegui. Agradeço alguma ajuda. Até lá ...
Pq a pesquisa retorna com caracteres distorcidos?
Colegas
Estou com problemas, o script funcionou Blz, mas os valores retornados da pesquisa vem com os caracteres distorcidos, os caracteres em lingua portuguesa, como: Ǻª e todos aqueles acentuados. Tem como resolver isso? Agradeço desde já
pt-br
Voce deve colocar esta declaração de DocType na pagina.html " <!DOCTYPE html
PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="pt-br" lang="pt-br"> " E este no arquivo .php " header("Content-Type: text/html; charset=iso-8859-1"); " Agora deve funcionar em Portugues-Br. Abraços.
Campo de texto
Bom... esse script realmente apareceu na hora certa para mim... porêm seria possível mostrar o resultado dentro de um campo de texto (textfield)para ser reenviado para o banco de dados... se alguém tiver a solução... desde já agradeço pelos esclarecimentos.
Problemas e dúvidas...
Entao..
um dos problemas q estou tendo.. eh com os acentos.... mas vou testar com a soluçao do canibalb... fora esse.. tenho dois problemas... tenho uma pagina cadastro.php q ao digitar o cpf no campo cpf.. busca pela pagina checa_cpf.php ... q se encontrar no banco de dados o cpf.. lista os campos preenchidos... para editar... e se nao encontrar, lista os campos em branco.. pronto para ser inserido no DB... nao vejo como... pois o xmlhttprequest nao joga os campos na pagina.. puxa o codigo-fonte q vc verah q nao estah lah... lah soh tem a <div id=campos></div>... esse eh um... agora outro.. como eu faria para puxar os dados de um arquivo... q jogar em mais de uma div? tipo.. pensando na mesma finalidade do problema 1.. eu preencheria o cpf.. dae se ele encontrar o no DB, joga cada campo em uma div diferente... tentei achar um modo.. mas nao conheço todas as possibilidades do xmlhttprequest.... ah! existe algo equivalente ou parecido a xmlhttprequest??? vlw galera... flw!
Problemas e dúvidas
putz.. acho q nao fui mto claro.. na minha duvida..
eh q como farei o codigo de UPDATE ou INSERT no DB se os campos nao estariam na pagina.. se eu jogar campos dentro de uma div q tah dentro das tags <form> </form>.. eles seriam jogados para as variaveis $_POST["nome_do_campo_inserido_dinamicamente"]??? agradeço mto se alguem me der uma luz... :-p flw!
Re: Problemas e dúvidas
alguem??
Resolvi umas coisas
Primeiro..
Resolveu meu problema de acentos a solucao do canibalb... Sobre a duvida se os campos inseridos via xmlhttprequest.. eu testei e vi q sim.. sem problemas... E sobre jogar os campos em divs separadas.. acho q eh inviável.. vlw.. obrigado
Carregando...
Entao..
queria montar uma mensagem de "Carregando..." enquanto ele nao chegar no status OK... como eu faria no codigo abaixo? function estado() { // apenas quando o estado for "completado" if (req.readyState == 4) { // apenas se o servidor retornar "OK" if (req.status == 200) { // procura pela div id="atualiza" e insere o conteudo // retornado nela, como texto HTML document.getElementById('estado').innerHTML = req.responseText; } else { alert("Houve um problema ao obter os dados:\n" + req.statusText); } } } Nao sei como fazer para inserir um texto ao inves da pagina.. definida na function loadXMLDoc() que vem acimda dessa... estado() Alguem sabe?
Carregando...
opa.. descobri..
antes do: if (req.readyState == 4) { coloquei o seguinte if (req.readyState != 4) { document.getElementById('dadoscep').innerHTML = "<h3>Carregando...</h3>"; } else
como fazer upload
gostaria de saber como fazer upload utilizando XMLHttpRequest?
Valeu!
Apenas 1 vez
Poxa.. ele só mostra os primeiros 5 resultados e depois não mostra mais nada.. olha como ta o meu news.php
<? $now = gmdate('D, d M Y H:i:s') . ' GMT'; header('Expires: ' . $now); header('Last-Modified: ' . $now); header('Cache-Control: no-store, no-cache, must-revalidate'); // HTTP/1.1 header('Cache-Control: pre-check=0, post-check=0, max-age=0'); // HTTP/1.1 header('Pragma: no-cache'); // HTTP/1.0 header("Content-Type: text/html; charset=iso-8859-1"); mysql_select_db("z_news") or die ("<b><font face=Verdana size=1>Não foi possível selecionar o Banco de Dados.<BR> <font color=red>Erro:</font> " .mysql_error(). "</b>"); $sql = "SELECT `noticia` FROM new ORDER BY RAND() LIMIT 1"; $query = mysql_query($sql); while ($res = mysql_fetch_array($query,MYSQL_ASSOC)) { echo "<h1>".$res['noticia']."</h1>"; } ?> ja fiz de tudo pra ele carregar com outros resultados mais nao vai =\
Apenas 1 vez
só foi pq usei RAND() c nao fosse isso ele tava travando
Evitando erros de header
Olá pessoal aquí é o Guto
Ninguém falou no assunto, mas ao testar o código acima obtive uma série de erros devido tipo "cannot sent headers- headers already sent at line xxxx" Aqui está o código a functionar correctamente e sem erros: <?php ob_start(); ?> <html> <script language="javascript" type="text/javascript" src="XMLHTTP.js"> </script> <h1> PAGINA ATUALIZADA SEM REFRESH </H1> <hr><br> <div id="news"></div> </html> <?PHP $now = gmdate('D, d M Y H:i:s') . ' GMT'; header('Expires: ' . $now); header('Last-Modified: ' . $now); header('Cache-Control: no-store, no-cache, must-revalidate'); // HTTP/1.1 header('Cache-Control: pre-check=0, post-check=0, max-age=0'); // HTTP/1.1 header('Pragma: no-cache'); // HTTP/1.0 echo "<h1>"."16:00"." - "."PHP é a linguagem mais usada na net em 2004"."</h1>"; echo "<h1>"."17:00"." - "."PHP5 tem suporte a orientacao a objetos"."</h1>"; ?> <?php ob_end_flush();?> http://onidesk.sytes.net
Usando POST ao invés de GET
Ae Bruno, primeiramente parabens pelo artigo, apesar dos pequenos que foram sendo corrigidos, sua contribuicaum foi magnifica...
Contudo fiquei com uma duvida. No seu exemplo, vc usa {req.open("GET", url, true)} mas eu gostaria de saber como faria para utilizar o POST. Como seriam informados os parametros? req.Send(???) Qual o formado que eles devem ser escritos? Valew, ggso
Parabens !!
primeiramente parabens pelo artigo !! testei aqui .. funcionou blzinha !!!
também queria saber sobre como usar POST no lugar do GET !!! abraço !! Alexandre Onda Internet www.ondainternet.com.br
Erro de codificação
Me Ajude porque se eu carregar uma página com html que tenha a palavra "endereço" porque ela tá vindo assim :"Endere?"
Alguem sabe Arrumar ?
loading...
eu gostaria de saber como que eu faço pra enquanto o servidor estiver carregando as informações que apareça uma div escrito carregando ja fiz de algumas formas mais não apareceu quem tiver uma solução pra isso... por favor ajuda ae!!! :D
Where...se eu quiser colocar?
E se eu quiser colocar um Where ai? o que eu posso fazer?
Abraços.
Mto bom! Obrigado!
Mto bom mesmo! Tem contéudo na net mas muitas coisas são inúteis ou que não passam uma explicação clara de código. Gostei mesmo!!! Estou ansioso para aplicar em um novo projeto... obrigado por me abrir esta porta amigo!
e enviano um campo ???
Olá Bruno,
muito bom seu artigo de ajax, bem so queria saber uma coisa, tipo se eu quiser enviar um campo de um formulario pra pagina que vai carregar no load loadXMLDoc("http://localhost/news.php"); bem sei que poderia mandar por parametro na url tipo: nome = document.form1.nome.value; loadXMLDoc("http://localhost/news.php?nome="nome); mas nao tem como dar tipo um submit pra eu poder pegar o campo no php com o $_POST[]: $nome = $_POST["nome"]; bem desculpe encomodar ai !!! valeu !!!
Problemas com palavras acentuadas
Olha só pessoal, apareceu o seguinte problema, onde a palavra é assentuada, ele coloca um "?".
Alguém pode me ajudar a resovler isso. o script está em www.topserverbr7.com/~sidronew/new.php Fico no aguarde de ajuda.
Problemas com palavras acentuadas
Olha só, tentei usar o código postado Por Canibald, mas tb não funcionou.
Funcionou
Ok, Pessoal o script funcionou ok, só não estava atualizando aqui, mas já está ok.
agora, quero saber o seguinte, Quero carregar a noticia clicada, no mesmo arquivo, tipo: Noticia Clicada, noticia 1... noticia 2... noticia 3..... Grato por ajuda.
Funciona muito bem
Agora a minha dúvida é o seguinte:
Eu adaptei um pequeno site com esse recurso e achei excelente mas ta dando pau nos formulários pois dentro dessa chamada ele não consegue localizar o manipulador do form pra checagem antes do submit. Se eu chamo a pagina por fora vai normal, dentro do site e dá um erro de java, informando a falta do objeto.
Usando XMLHttpRequest
eu consegui resolver o erro do manipulador e agora ele checa antes de enviar o formulario.
sobre o sistema de news de exemplo
Oi, alguém poderia disponibilizar o texto necessário para criar as tabelas do SQL ?
Fiz uma aki, funcionar funcionou, mas queria ver como seria o mais correto... Thanks ^^
Usando XMLHttpRequest
Ola,,,
Tem como fazer isso! Clicou no botao processar aparece um alert com o "aguarde", ao termino do processamento ele retira o alert e exibi um resultado! Alguem tem um exemplo. To tomando uma surra! Obrigado
Validação CPF/CNPJ/E-mail
existem alguma possibilidade? ou alguém já tentou criar um em que seja validado cpf/cnpj, e-mail após o campo do form perder o foco?
div como parâmetro da função
preciso passar o campo div como parâmetro para tornar a função processReqChange() genérica mas não consigo fazer isto porque a chamada dela não utiliza parâmetros:
req.onreadystatechange = processReqChange; tentei colocar os parâmetros mas tudo para de funcionar. mudanças: loadXMLDoc(url,campo) ... req.onreadystatechange = processReqChange(campo); ... <body onLoad="loadXMLDoc(www.teste.com.br,document.form.campo.id)"> ... <div id="news"></div> ...
Re: div como parâmetro da função
desculpem:
<body onLoad="loadXMLDoc(www.teste.com.br,document.form.news.id)">
JavaScript não roda no Firefox
Prezado Bruno:
O JavaScript abaixo não roda através do navegador Firefox. Será que VC poderia me ajudar alterando algum(s) parâmetros ? Agradeço desde já = Fiumari: <script language="JavaScript"> var ultimo=-1, dBanner; function carrega(x) {dBanner=x;Banners()} function Banners() { var MNews = new Array(); MNews[0]= '<iframe " name="_blank" scrolling="no" src="http://www.finet.com.br/google.htm" width="100%" frameborder="0" target="_blank" height="350" BORDER="0"></iframe><a href="http://www.finet.com.br/google.htm" target="_blank">CLIQUE => E ABRA O SITE AMPLIADO</a>'; MNews[1]= '<iframe " name="_blank" scrolling="no" src="http://www.finet.com.br/google2.htm" width="100%" frameborder="0" target="_blank" height="350" BORDER="0"></iframe><a href="http://www.finet.com.br/google2.htm" target="_blank">CLIQUE => E ABRA O SITE AMPLIADO</a>' while((Numero = parseInt(Math.random()*MNews.length))==ultimo); dBanner.innerHTML=MNews[Numero]; setTimeout("Banners()",15000); } </script> |
|
||||||||||||||||||||||||||
|
|
| João Prado Maia | ||