Sobes.tech
Junior

Hogyan értelmezheti a kliens, hogy a szerverről származó adatok sikeresen megérkeztek és megjelennek a böngészőben?

sobes.tech MI

Válasz az MI-től

A kliens JavaScript többféle módon követheti nyomon az adatok sikeres fogadását és megjelenítését:

  • AJAX-kérések: XMLHttpRequest vagy Fetch API használata esetén a siker a HTTP-válasz státuszkódja alapján határozható meg. A 200-299 közötti kódokat sikeresnek tekintjük.

    // Fetch API példa
    fetch('/api/data')
      .then(response => {
        if (response.ok) { // Ellenőrizzük a HTTP státuszt (200-299)
          return response.json();
        } else {
          throw new Error('Szerverhiba: ' + response.status);
        }
      })
      .then(data => {
        // Az adatok sikeresen megérkeztek és készen állnak a megjelenítésre
        console.log('Sikeres adatlekérés:', data);
        // Az adatok megjelenítésének logikája a böngészőben
        displayData(data);
      })
      .catch(error => {
        // Hibakezelés kérés közben
        console.error('Hiba az adatok lekérésekor:', error);
      });
    
    function displayData(data) {
        // Az adatok DOM-ba való beszúrása és a sikeres renderelés ellenőrzése
        const element = document.getElementById('data-container');
        if (element) {
            element.innerText = JSON.stringify(data, null, 2); // Példa beszúrás
            // Ellenőrizhetjük, hogy az elem megjelent-e a DOM-ban
            if (document.contains(element)) {
                console.log('Az adatok sikeresen megjelenítve a DOM-ban.');
            }
        }
    }
    
  • WebSocket-ek: Az adatok fogadásának sikerességét az onmessage esemény kiváltása határozza meg. Az adatok megjelenítése a böngészőben további logikát igényel a fogadott üzenet után.

    const socket = new WebSocket('ws://localhost:8080/ws');
    
    socket.onopen = function(event) {
      console.log('WebSocket kapcsolat létrejött.');
    };
    
    socket.onmessage = function(event) {
      console.log('WebSocket-en keresztül kapott adatok:', event.data);
      // Az adatok megérkeztek, most megjeleníthetjük őket
      displayDataFromWebSocket(event.data);
    };
    
    socket.onerror = function(event) {
      console.error('WebSocket hiba:', event);
    };
    
    socket.onclose = function(event) {
      if (event.wasClean) {
        console.log(`A WebSocket kapcsolat tisztán zárult, kód=${event.code}, ok=${event.reason}`);
      } else {
        console.error('A WebSocket kapcsolat megszakadt');
      }
    };
    
    function displayDataFromWebSocket(data) {
        // A WebSocket-en keresztül kapott adatok megjelenítési logikája
        const element = document.getElementById('websocket-data');
        if (element) {
            element.innerText = data;
            // Sikeres renderelés ellenőrzése
            if (document.contains(element)) {
                console.log('A WebSocket adatai sikeresen megjelenítve.');
            }
        }
    }
    
  • HTML űrlapok: Hagyományos HTML-űrlapok és átirányítás esetén a sikeresség az új oldal betöltésével és a várt tartalom megjelenésével határozható meg. Az új oldali kliens szkript ellenőrizheti az adatok jelenlétét a DOM-ban a betöltés után (DOMContentLoaded).

  • Szerveroldali sablonok: Ha az adatok szerveroldalon (pl. JSP, Thymeleaf) kerülnek beágyazásra, a sikeres fogadás és megjelenítés egyidejűleg történik az oldal betöltésével. A kliens szkript ellenőrizheti az adatokkal rendelkező elemek jelenlétét a DOMContentLoaded esemény után.

  • DOM ellenőrzések: Az adatok DOM-ba való beszúrása után a JavaScript ellenőrizheti a beszúrt elemek jelenlétét, tartalmát vagy tulajdonságait.

    // Példa az elem jelenlétének ellenőrzésére az adatok beszúrása után
    const dataElement = document.getElementById('rendered-data-id');
    if (dataElement && dataElement.innerText !== '') {
        console.log('Az adatok sikeresen megjelenítve a DOM-ban.');
    }
    

Fontos megérteni a különbséget a "adatok fogadása" (sikeres HTTP-válasz vagy WebSocket üzenet) és a "böngészőben való megjelenítés" (az adatok DOM-ba való integrálása és renderelése) között. A sikeres fogadás nem garantálja az azonnali és helyes megjelenítést, amely a kliens logikájától függ.