Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [AJAX]Odświeżanie diva
Forum PHP.pl > Forum > Przedszkole
GoOx
Cześć,

mam taki prosty kodzik:

  1. <div class='right' id='right' onchange='test();'>
  2. kod php
  3. </div>
  4.  
  5. <script type='text/javascript'>
  6. function test() {
  7. $("#right").html(data);
  8. setTimeout('test()', 1000);
  9. }
  10. window.onload = test();
  11. </script>


I Pytanie jak to zmusić aby div był odświeżany co sekundę? Bo to mi nie działa ;/
konrados
Jeśli chodzi o js to jest ok. Ale jeśli Ty sądzisz, że tu:

  1. <div class='right' id='right' onchange='test();'>
  2. kod php
  3. </div>


Za każdym razem od nowa wykona się php to jest w błędzie. Do tego służy ajax.
A najprościej z jquery: http://api.jquery.com/load/
GoOx
Więc jak ty wykonać by ten kod php się wqykonywał co tę sekundę? Bo w seci wszędzie pisze że tak a ja już nie wiem nawet jak do tego się zabrać.
konrados
Przecież Ci napisałem: AJAX i nawet linka dałem.

Cytat
Bo w seci wszędzie pisze że tak

Gdzie takie bzdury niby piszą?
PHP działa po stronie serwera, gdy już przekaże treść do przeglądarki, jego zadanie się definitywnie kończy a wkracza ewentualnie javascript.
GoOx
Wiem, zobaczyłem link jak już napisałem.

Teraz mam taki kod:

  1. <script type='text/javascript'>
  2. function test() {
  3. $('#right').load('footer.php #right');
  4. setTimeout('test()', 1000);
  5. }
  6. window.onload = test();
  7.  


i nadal nie działa ;/

z samą linijką

$('#right').load('footer.php #right');

też próbowałem
konrados
Po pierwsze wystarczy samo $('#right').load('footer.php'). Bo drugie widzę, że 'right' to klasa więc powinno być $('.right').load('footer.php'). Po trzecie - zaincludowałeś Ty jquery? Robimy np. tak:

  1. <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script>


edit: a widzę, że right to i klasa i id, więc drugi punkt odpada.
GoOx
Ok dodałem tą linijkę:

  1. <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script>


i to :
$('#right').load('footer.php #right');


coś zaczęło się dzaić ponieważ cały pasek mi zniknął ale nie widać żadnych danych.
konrados
Mam dziwne wrażenie, że czytasz tak mniej więcej połowę postu... ma być:

$('#right').load('footer.php');//wyrzucone drugie #right

Poza tym włącz konsolę (F12 w chrome, firebug w FF) i zobacz czy nie ma jakichś błędów. No i upewnij się, że 'footer.php' znajduje się w tym samym folderze w którym masz ten cały skrypt.
GoOx

Warning: mysql_query() [function.mysql-query]: Access denied for user 'user'

tylko że kod działał zanim dodałem do niego jquery.

Wszystko jest dobrze i znajduje się w tym samym folderze.
konrados
To nie ma związku.

Rozumiem, że taka treść pojawia się w #right czyli błąd jest w footer.php tak? W takim razie no... napraw ten błąd.
GoOx
Dobra już wszystko wczytywane jest poprawnie lecz nie ma tego odświeżania.

  1. <script type='text/javascript'>
  2. $("#right").load('r.php');
  3. </script>

a wszystko teraz znajduje się w pliku r.php to co chcę odświeżać
konrados
No ale gdzie tu masz jakieś setTimeout? Ma być prawie tak jak było:

  1. <script type='text/javascript'>
  2. function test() {
  3. $('#right').load('r.php');
  4. setTimeout('test()', 1000);
  5. }
  6. window.onload = test();
  7.  
  8. </script>
GoOx
właśnie tak zrobiłem nadal nic ;/

Jest działa! wielkie dzięki zamiast window napisałem windows. Ale czapa :x
konrados
Spoko.
Co do 'windows' zamiast 'window' konsola błędów by to złapała, więc się z nią zaprzyjaźnij:)
GoOx
Dobra ostatnie pytanko słyszałemże w jquery trzeba osobno ustawić kodowanie? Jak to zrobić?

dodałem coś takiego:

$.ajaxSetup({
contentType: "application/x-www-form-urlencoded; charset=windows-1250",
});

Nadal mam kwadraty.
konrados
Chyba powinno wystarczyć, że obie strony (ta na której jest skrypt i ta ładowana) mają to samo kodowanie. Najlepiej utf-8.

GoOx
Właśnie mają te same kodowanie i z tego wychodzi że nie działa.
konrados
A to już nie wiem, może kto inny się wypowie.
Nigdy nie miałem takich problemów. Może zamień kodowanie na utf-8. Ponadto upewnij się, że nie tylko zapisujesz jako utf-8 ale masz to też określone w head dokumentu:


  1. <meta http-equiv="Content-Type" content="text/html; charset=utf-8">

GoOx
Jedynie mogę dać coś takiego:

  1. $lang_online_users = iconv('WINDOWS-1250', 'UTF-8', $lang_online_users);

i działa.

Kodowanie zmieniłem wszędzie na utf i tak to samo było ale można wymusić mu zmianę kodowania poprzez php.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.