Olá a todos, tenho um webserver microcontorlado, que quando digito a seguinte url no browser : http://10.0.5.48/get_data?type=temperature , ele retorna a temperatura local. Gostaria de gerar essas temperaturas em fila, na tela do browser, mas quando faço a segunda requisição da temperatura, ela apaga a primeira, pois atualiza a página. Estou usando o objeto XMLHttpRequest, para pegar esses dados, sem carregar a página. O problema é que o script que está descrito abaixo, só mostra o valor uma vez e trava no firefox, e no IE7, só mostra todos os valores de uma vez, ficando o browser um grande tempo congelado. Utilizei para teste, um array para armazenar as temperaturas e, após esse array completo, mostrar na tela com o document.write, via loop. Funcionou, mas eu tenho que ir mostrando os valores logo quando disponíveis. Com certeza, o problema desse script é a implementação do document.write, mas não estou conseguindo descobrir o que está errado, pois estou iniciando os estudos em javascript.
Desde já, agrqdeço a colaboração.
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title>DHTML - JavaScript - XMLHttpRequest test 2</title><meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> <meta http-equiv="Content-Style-Type" content="text/css" /> <meta http-equiv="Content-Script-Type" content="text/javascript" /><script type="text/javascript"> <!--
// Global constant (const doesn't work on IE 6, then var is applied instead)var CGI_funcName = "http:./get_data?type=temperature";var i=0;
// issue request to server function sendXMLHttpReq( method, url, async, callback, txt ) { var req = false; // branch for IE/Windows ActiveX version if(window.ActiveXObject) { try { req = new ActiveXObject("Msxml2.XMLHTTP"); } catch(e) { try { req = new ActiveXObject("Microsoft.XMLHTTP"); } catch(e) { req = false; } } // branch for native XMLHttpRequest object } else if( window.XMLHttpRequest ) { try { req = new XMLHttpRequest(); } catch(e) { req = false; } } if( req ) { req.open( method, url, async ); // cancel cache on IE req.setRequestHeader("If-Modified-Since","Thu, 01 Jun 1970 00:00:00 GMT"); if ( callback ) { req.onreadystatechange = function() { // when successfully completed if ( (req.readyState == 4) && (req.status == 200) ) { // hand the data to callback callback( req.responseText ); } } } req.send( txt ); } }
function show_in_browser(temp) { document.write(temp + "<br>"); }
Pergunta
johnwww
Olá a todos, tenho um webserver microcontorlado, que quando digito a seguinte url no browser : http://10.0.5.48/get_data?type=temperature , ele retorna a temperatura local. Gostaria de gerar essas temperaturas em fila, na tela do browser, mas quando faço a segunda requisição da temperatura, ela apaga a primeira, pois atualiza a página. Estou usando o objeto XMLHttpRequest, para pegar esses dados, sem carregar a página. O problema é que o script que está descrito abaixo, só mostra o valor uma vez e trava no firefox, e no IE7, só mostra todos os valores de uma vez, ficando o browser um grande tempo congelado. Utilizei para teste, um array para armazenar as temperaturas e, após esse array completo, mostrar na tela com o document.write, via loop. Funcionou, mas eu tenho que ir mostrando os valores logo quando disponíveis. Com certeza, o problema desse script é a implementação do document.write, mas não estou conseguindo descobrir o que está errado, pois estou iniciando os estudos em javascript.
Desde já, agrqdeço a colaboração.
Link para o comentário
Compartilhar em outros sites
9 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.