Vydělávej až 160.000 Kč měsíčně! Akreditované rekvalifikační kurzy s garancí práce od 0 Kč. Více informací.
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.
Avatar
Sperhak
Člen
Avatar
Sperhak:8.5.2022 12:21

Ahojte, nedarí sa mi parsovať dáta oddelené čiarkou a následne ich zobrazovať na web stránke.

Zkusil jsem: Udávam príklad fungujúceho kódu, kde sa parsovanie nepoužíva. Web stránka si vyžiada každé 2s dáta zo serveru, ten ich pošle a stránka ich zobrazí.

 <!DOCTYPE html>
<html>
<body>
<center>
<span id="voltage_val">0</span>
</body>
</center>
 <script>
setInterval(function()
{
  getData();
}, 2000);
function getData() {
  var xhttp = new XMLHttpRequest();
  xhttp.onreadystatechange = function() {
    if (this.readyState == 4 && this.status == 200) {
      document.getElementById("voltage_val").innerHTML =
      this.responseText;
    }
  };
  xhttp.open("GET", "voltage_read", true);
  xhttp.send();
}
</script>
</html>

Chci docílit: Chcel by som aby server posielal viac údajov na jednu požiadavku, čo na strane servera mám vyriešené a dáta posiela vo formáte napr. 55.14,96.19 Len sa mi tieto dáta nedarí rozdeliť a jednotlivo zobraziť. Snažil som sa upravovať nejaký kód z netu no neúspešne. Takto vyzerá moja snaha ktorá nefunguje.

<!DOCTYPE html>
<html>
<body>
<center>
 <span id="data[0]">0</span> <br />
  <span id="data[1]">0</span> <br />
  <span id="data[2]">0</span>  <br />
</body>

</center>

  <script>
setInterval(function()
{
  getData();
}, 2000);
function getData() {
  var xhttp = new XMLHttpRequest();
  xhttp.onreadystatechange = function() {
    if (this.readyState == 4 && this.status == 200) {
      dataArray = parse(this.responseText);
    }
  };
  xhttp.open("GET", "voltage_read", true);
  xhttp.send();
}

function parse(string) {
    var array = [];
    var lines = string.split("\n");
    for (var i = 0; i < lines.length; i++) {
        var data = lines[i].split(",", 3);
        data[0] = parseFloat(data[0]);
        data[1] = parseFloat(data[1]);
        data[2] = data[0] * data[1];
        array.push(data);
    }
    return array;
}

</script>
</html>
 
Odpovědět
8.5.2022 12:21
Avatar
Peter Mlich
Člen
Avatar
Peter Mlich:8.5.2022 19:17

konzola a console.log v jednotlivych krocich ti vypisuje co?
Zkousel sis udelat jednoduchy priklad?
Ja jo, parsovanci cast, zda se, funguje. Chybu mas asi jinde

<script>
var string = "1,2,3\n4,5,6\n7,8,9";
    var array = [];
    var lines = string.split("\n");
console.log(lines)
    for (var i = 0; i < lines.length; i++) {
        var data = lines[i].split(",", 3);
console.log(data, 'data-IN')
        data[0] = parseFloat(data[0]);
        data[1] = parseFloat(data[1]);
        data[2] = data[0] * data[1];
        array.push(data);
console.log(array[array.length-1], 'array-OUT')
    }
    console.log(array);

/*
Array(3) [ "1", "2", "3" ]
 data-IN js-parse.htm:8:9
Array(3) [ 1, 2, 2 ]
 array-OUT js-parse.htm:13:9
Array(3) [ "4", "5", "6" ]
 data-IN js-parse.htm:8:9
Array(3) [ 4, 5, 20 ]
 array-OUT js-parse.htm:13:9
Array(3) [ "7", "8", "9" ]
 data-IN js-parse.htm:8:9
Array(3) [ 7, 8, 56 ]
 array-OUT
*/
</script>
Editováno 8.5.2022 19:18
 
Nahoru Odpovědět
8.5.2022 19:17
Avatar
Peter Mlich
Člen
Avatar
Peter Mlich:8.5.2022 19:22

do dataArray davas vysledek a s tim pak delas co? ten samotny request ti funguje? Ten totiz funguje, kdyz se to spousti pres server, localhost-server, jen ne file:// . Pres file to funguje jen, kdyz ostranis ==4 nebo ==200 jednu z tech podminek, ted si nejsem jisty, kterou.

 
Nahoru Odpovědět
8.5.2022 19:22
Avatar
Sperhak
Člen
Avatar
Odpovídá na Peter Mlich
Sperhak:8.5.2022 19:54

Ahoj, konzolu nepoužívam, lebo na písanie používam pspad a tam som to ešte neobjavil, čo by si mi odporučil na písanie kódu?
No data by som chcel vypísať na stránke používam nato tieto riadky

<span id="data[0]">0</span> <br />
 <span id="data[1]">0</span> <br />
 <span id="data[2]">0</span>  <br />

ale asi je to zle. No v tom array tie dáta sú ako to tam máš aj ty, ale potreboval by som ich rozdeliť tak aby som to vedel jednotlivo vypísať cez ten span.

Ano request funguje.

Editováno 8.5.2022 19:56
 
Nahoru Odpovědět
8.5.2022 19:54
Avatar
Sperhak
Člen
Avatar
Sperhak:8.5.2022 22:45

Tak už mi to funguje. Prikladám funkčný kód.

  <script>
setInterval(function()
{
  getData();
}, 2000);
function getData() {
  var xhttp = new XMLHttpRequest();
  xhttp.onreadystatechange = function() {
    if (this.readyState == 4 && this.status == 200) {
      dataArray = parse(this.responseText);
    }
  };
  xhttp.open("GET", "voltage_read", true);
  xhttp.send();
}

function parse(string) {
    var array = [];
    var lines = string.split("\n");
console.log(lines)
    for (var i = 0; i < lines.length; i++) {
        var data = lines[i].split(",", 3);
console.log(data, 'data-IN')
        data[0] = parseFloat(data[0]);
        data[1] = parseFloat(data[1]);
        data[2] = data[0] * data[1];
        array.push(data);
console.log(array[array.length-1], 'array-OUT')
    }
    console.log(array);
document.getElementById("data[0]").innerHTML = data[0];
document.getElementById("data[1]").innerHTML = data[1];
document.getElementById("data[2]").innerHTML = data[2];
}
</script>
 
Nahoru Odpovědět
8.5.2022 22:45
Avatar
Peter Mlich
Člen
Avatar
Peter Mlich:9.5.2022 8:27

Cili, jsi tam nemel zadny kod, ktery to prepisuje do tech spanu :) Tak to je pak tezke :)

 
Nahoru Odpovědět
9.5.2022 8:27
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 6 zpráv z 6.