Odświeżanie fragmentu strony.

0

Cześć wszystkim,
Mam mały problem, robię aktualnie mały projekt do szkoły oparty na raspberry pi, który ma odczytywać aktualna temperature w pomieszczeniu, wyświetlać ją na stronie i ewentualnie dogrzać pomieszczenie do podanej temperatury. Jako że nigdy w życiu nic nie robiłem w javascripcie (bo chyba w nim trzeba takie odświeżanie zrobić?) to kompletnie nie mogę sobie z tym poradzić :( Aktualnie moja strona wygląda tak:
user image
Chciał bym aby ta temperatura w kółku odświeżała się automatycznie powiedzmy co 5 sekund. Może najpierw wkleję mój zacny kod z htmla:

 <?php

include 'temp.php';
?>

<?php 

if (isset($_POST['plugon']))
	{
		
	}

?>

<!DOCTYPE HTML>
<html lang="en">
<head>
<link rel="stylesheet" href="style.css">

</head>
<body>
<center>
<div class="container">
    <div class="de">
        <div class="den">
          <div class="dene">
            <div class="denem">
              <div class="deneme">
            <span><?php echo $temp; ?></span><strong>&deg;c</strong>
              </div>
            </div>
          </div>
        </div>
    </div>
</div>
</center>
</body>
</html>

Środek temp.php:

<?php

	// Sciezka pliku
	$file = '/sys/bus/w1/devices/28-02155013e4ff/w1_slave';
	
	// Odczyt z pliku
	$lines = file($file);
	
	// Krojenie napisu
	$temp = explode('=', $lines[1]);
	
	//Formatowanie tempsy
	$temp = number_format($temp[1] / 1000, 1, '.', '');
	
?>

Próbowałem coś kombinować z jakąś biblioteką jquery i odświeżaniem div'a, ale w ogóle mi to nie chciało działać:

<script src="http://code.jquery.com/jquery-latest.min.js" type="text/javascript"></script>
<script language="javascript" type="text/javascript">

var timeout = setInterval(reload, 5000);    
function reload () {

     $('#deneme').load('temp.php');
}
</script>

Jak już wcześniej wspomniałem nigdy w życiu nie miałem do czynienia z js i taki skrypt to chyba zbyt głęboka woda jak na początek dla mnie. Bardzo proszę o pomoc.

Pozdrawiam serdecznie mix091 ;)

1

Twój pierwotny kod PHP działa tak:

  1. inkluduje skrypt php zapisujący temperaturę do zmiennej $temp
  2. wypisuje na stronie zawartość zmiennej $temp
  3. uzupełniona strona leci do przeglądarki

Natomiast odświeżanie próbujesz zrobić:

  1. wywołaj skrypt php zapisujący temperaturę do zmiennej $temp ** i nic nie wysyłający na wyjście**
  2. nic leci do przeglądarki
  3. otrzymane wcześniej nic ładuje na stronę...

Proponuję abyś zrobił to tak, by temp.php wypisywał temperaturę na wyjście i inkludował go w miejscu, gdzie ta temperatura ma się pojawić czyli w spanie...

Wtedy już mogłoby działać, ale nie zadziała, bo błędnie określiłeś element do załadowania jako #deneme. By znaleźć błąd zaglądnij tu: http://api.jquery.com/category/selectors/basic-css-selectors/

I już powinno działać, ale odświeżać będzie się inaczej niż wyglądało pierwotnie, bo ładujesz tę stronę do diva, chociaż pierwotnie temperatura była wpisana w spanie znajdującym się w tym divie...

0
notexists napisał(a):

Proponuję abyś zrobił to tak, by temp.php wypisywał temperaturę na wyjście

Nie za bardzo łąpię o co chodzi, mógł byś mi to jakoś bardziej rozjaśnić?

A z tym błędem w składni to powinienem dodać div przed #?
$('div#deneme').load('temp.php');
Coś takiego?

1

Dodaj po prostu echo do temp.php.
A najlepiej to nie tam, a utwórz nowy plik getTemperature.php, w którym będzie samo echo z temperaturą.

Btw, nie nazywaj nigdy plików w stylu temp.php, ta nazwa nic nie mówi. Mamy XXI wiek, nie musisz oszczędzać na identyfikatorach oraz innych nazwach.

0

Chyba dalej coś robię źle. Do pliku temp.php dodałem na końcu echo $temp. W index.html do spana dodałem inkludowanie temp.php wygląda to teraz tak:

<div class="deneme">
      <span><?php include 'temp.php'; ?></span><strong>&deg;c</strong>
</div>

W skypcie dodałem div przed # z id diva:

<script src="http://code.jquery.com/jquery-latest.min.js" type="text/javascript"></script>
<script language="javascript" type="text/javascript">

var timeout = setInterval(reload, 5000);    
function reload () {

     $('div#deneme').load('temp.php');
}
</script>

I niestety dalej nie chce mi to działać, co jeszcze robię źle?

2

Przecież nigdzie nie masz tam diva o id deneme, do którego tak namiętnie próbujesz odnieść się w kodzie :P

0

Hahah oj tam szczegóły :D
Dzięki wielkie za pomoc, już wszystko działa :)

1 użytkowników online, w tym zalogowanych: 0, gości: 1