Jak vypisovat hodnoty s text souboru. – JavaScript, AJAX, jQuery – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Jak vypisovat hodnoty s text souboru. – JavaScript, AJAX, jQuery – Fórum – Programujte.comJak vypisovat hodnoty s text souboru. – JavaScript, AJAX, jQuery – Fórum – Programujte.com

 

Borisek0
Stálý člen
9. 3. 2019   #1
-
0
-

Dobrý den, bych chtěl poprosit o pomoc ty zkušenější.
Když mám na raspi text soubory, a v každém je jen jeden řádek s teplotou, třeba 68.8
/dev/shm/teplota_kotel

Bych tu teplotu chtěl vypisovat na mém webu.
Web server běží také na raspi.
Přes PHP jsem to už zvládl.
Bych ale chtěl, aby se teplota sama třeba co 10 vteřin aktualizoval.
Jsem našel na netu info že se to děla přes java script.
Nepomohl by někdo, nebo alespoň nasměrovat na nějaký jednoduchý přiklad.
Děkují.

Nahlásit jako SPAM
IP: 95.173.82.–
gna
~ Anonymní uživatel
1891 příspěvků
10. 3. 2019   #2
-
0
-

Tomu stažení dat v JS se říká AJAX. Šlo by to i v čistém JS, ale já jsem tady použil knihovnu jQuery 1. Takže třeba takhle funkcí setInterval naplánuješ opakované provádění funkce, která ajaxem načte data z teplota.php a vloží výsledek do dokumentu.

<head>
<script type="text/javascript" src="//code.jquery.com/jquery-1.12.4.min.js"></script>
<script type="text/javascript">
setInterval(function() {
    $.ajax({
        url:'teplota.php',
        cache: false,
        success: function(data) {
            $('#teplota').html(data);
        },
        error: function() {
            $('#teplota').html('Chyba!');
        },
    });
}, 10000);
</script>
</head>
<body>
...
<div id="teplota">Ještě nevím...</div>
Nahlásit jako SPAM
IP: 213.211.51.–
Borisek0
Stálý člen
10. 3. 2019   #3
-
0
-

Děkují moc.
Pokud jsem to pochopil, tak Vý tu hodnotu teploty načítáte s php.
url:'teplota.php'

A když jí mám v souboru?  /dev/shm/teplota_kotel.txt

PS: Moh bych poprosit i ten druhý způsob - čisté JS.

Nahlásit jako SPAM
IP: 95.173.82.–
gna
~ Anonymní uživatel
1891 příspěvků
10. 3. 2019   #4
-
0
-

JavaScript se provádí u klienta v prohlížeči, takže pochopitelně nemůže číst libovolné soubory na serveru a musí to pro něj udělat ten PHP skript.

Příkladu AJAXu v JS bez knihoven je třeba tady.

Nahlásit jako SPAM
IP: 213.211.51.–
Borisek0
Stálý člen
11. 3. 2019   #5
-
0
-

Tak to je pro mě jednodušší ten první přiklad.
Ještě prosba k tomu prvnímu přikladu.
Když vytvořím soubor teplota.php a vněm dam vypisovat tu teplotu přes echo, tak to funguje, jelikož ten ajax si ho s něho načitá.
 url:'teplota.php',
 
Mohl by jste mi ho upravit tak, aby tu hodnotu načítal přímo s toho textaku?
Tak jak je to v tom druhem přiklad 
xhttp.open("GET", "ajax_info.txt", true);
 
Tedy
xhttp.open("GET", "/dev/shm/teplota_kotel.txt", true);
 
Děkjí.

Nahlásit jako SPAM
IP: 95.173.82.–
MilanL+1
Grafoman
11. 3. 2019   #6
-
0
-

#5 Borisek
tohle bych bez ošetření práv na straně serveru asi nepoužíval, každopádně je potřeba upravit  v té událostní funkci onreadystatechange co se má udělati s obsahem souboru.

v tom příkladu je v souboru HTML a je to vloženo pomocí innerHTML do elementu s ID="demo"

chce to se nad tím příkladem zamyslet  a prozkoumat co který řádek vlastně dělá.

Nahlásit jako SPAM
IP: 91.139.9.–
gna
~ Anonymní uživatel
1891 příspěvků
11. 3. 2019   #7
-
0
-

#5 Borisek
Už jsem psal, že JS nemůže ten soubor číst přímo. Musíš ho nějak vystavit na web serveru. Nejjednodušeji tak, že jeho obsah bude vracet ten PHP skript. Za předpokladu, že má práva ho číst.

<?php
readfile('/dev/shm/teplota_kotel.txt');
Nahlásit jako SPAM
IP: 213.211.51.–
Borisek0
Stálý člen
12. 3. 2019   #8
-
0
-

#7 gna
Už jsem psal, že JS nemůže ten soubor číst přímo.

To jsem pochopil, já chci použit ten AJAX.
Bych chtěl použít ten přiklad, co jste tu dál.
Ten však volá php stránku   url:'teplota.php',
Bych chtěl volat přímo ten txt soubor přes ten AJAX "/dev/shm/teplota_kotel.txt" a s něho tu hodnotu číst.
https://www.w3schools.com/…ttp_send.asp

Tedy misto toho url:'teplota.php' použít
xhttp.open("GET", "/dev/shm/teplota_kotel.txt", true);

Zkouším ale nějak se nedaří

Nahlásit jako SPAM
IP: 95.173.82.–
gna
~ Anonymní uživatel
1891 příspěvků
12. 3. 2019   #9
-
0
-

Tak ještě jednou. AJAX se dělá v JavaScriptu. To, co jsem napsal s pomocí jQuery (JavaScriptové knihovny), dělá to samé jako to řešení v čistém JS, na které jsem odkázal (a které vysvětluje, co je AJAX).

Obě řešení potřebují URL, protože prostě nic jiného nemůžou číst. Takže AJAXem načteš teplota.php, který načte ten finální texťák.

Původně jsem napsal tohle a nechám to tady:

Já jsem to pochopil tak, že máš stránku, která vypisuje tu teplotu. Teď tam chceš přidat její dynamickou aktualizaci. Tak jsi vyzkoušel AJAX na skript s jednoduchým echem, který funguje. A nenapadne tě prostě tam dát výpis té teploty podobně, jako to děláš u té hlavní stránky?

Nahlásit jako SPAM
IP: 213.211.51.–
peter
~ Anonymní uživatel
4016 příspěvků
13. 3. 2019   #10
-
0
-

https://webapp.fpf.slu.cz/osob_stranky/test
Edit dole, edit layout, to nacita ze souboru. Muzes si zkopirovat kod nebo najit podobny pomoci googlu.

Nahlásit jako SPAM
IP: 2001:718:2601:258:4dbc:3838:5a25:f2e0...–
peter
~ Anonymní uživatel
4016 příspěvků
13. 3. 2019   #11
-
0
-

ty ostatni tam nejdou, protoze tam mam spatne cesty, prizpusobene pro lokalni testovani.

Nahlásit jako SPAM
IP: 2001:718:2601:258:4dbc:3838:5a25:f2e0...–
Borisek0
Stálý člen
13. 3. 2019   #12
-
0
-

#10 peter
Tam níc nevidím.

Nahlásit jako SPAM
IP: 95.173.82.–
peter
~ Anonymní uživatel
4016 příspěvků
13. 3. 2019   #13
-
0
-

1. https://webapp.fpf.slu.cz/osob_stranky/test
2. Uplne posl. text dole na strance je 'Edit'. Na to klinkni
3. klikni posl. tlacitko Edit layout, ktere se objevilo a odroluj nahoru, tam by mel zobrazi sablonu.
Pokud se tak nestane, tak zkus ty ostatni tlacitka a pak 'Close' ten editor a znovu bod 2, 3. Mozna je tam nejaka chyba, uz jsem to dal nevyvijet.
Kazdopadnem muzes zkouknout html kod a dole je link na js kod…
view-source:https://webapp.fpf.slu.cz/…le-reader.js

Nahlásit jako SPAM
IP: 2001:718:2601:258:4dbc:3838:5a25:f2e0...–
peter
~ Anonymní uživatel
4016 příspěvků
13. 3. 2019   #14
-
0
-

a kod z toho druheho js pro pouziti (cb je navratova funkce)
 view-source:https://webapp.fpf.slu.cz/…b_stranky.js


OS.func.download = function (url, cb)
	{
//alert(url);
	READER.opt.cbEnd = cb;
	READER.func.fileFromUrl(url);
	};
//---

OS.func.download(url, OS.editorHtml.func.contentWrite);


Nahlásit jako SPAM
IP: 2001:718:2601:258:4dbc:3838:5a25:f2e0...–
Borisek0
Stálý člen
30. 3. 2019   #15
-
0
-

Muže mi někdo vysvětlit toto.

Toto je funkční

<!DOCTYPE html>
<html>
<body>
   
<div id="shm/teplota_kotel" class="data">Žádná data :(</div>

<script>
function nactiData() {
  var data = document.getElementsByClassName("data");

  for (var i = 0; i < data.length; i++) {
    var soubor = data[i].getAttribute("id")
   
    var xhttp = new XMLHttpRequest();
    xhttp.onreadystatechange = function() {
      if (this.readyState == 4 && this.status == 200) {
        document.getElementById(soubor).innerHTML =
        this.responseText;
      }
    };
    xhttp.open("GET", soubor, true);
    xhttp.send();
  }
}

nactiData();

setInterval(function () {
  nactiData();
}, 10000);
</script>

</body>
</html>

Když tam však přidam další tak funkčví vždý ten poslední.

<div id="shm/teplota_koupelna" class="data">Žádná data :(</div>
<div id="shm/teplota_kotel" class="data">Žádná data :(</div>
<div id="shm/teplota_voda" class="data">Žádná data :(</div>
<div id="shm/teplota_pokoj" class="data">Žádná data :(</div>

Samostatně je funkční každy

Nahlásit jako SPAM
IP: 95.173.82.–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 2 hosté

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý