Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [AJAX][PHP] jak pobrać dane po odświeżeniu strony z innego pliku
Forum PHP.pl > Forum > Przedszkole
pawel06281990
Witam,

Mam skrypt, który obsługuje odświeżanie i dodawanie przez div nowych informacji, ale nie wiem, jak wyciągnąć z php żeby mi się wyświetliła nowa informacja.

  1. <script type="text/javascript">
  2. function ajaxObject()
  3. {
  4. if(window.ActiveXObject)
  5. {
  6. var request = new ActiveXObject("Microsoft.XMLHTTP");
  7. return request;
  8. }
  9. else if(window.XMLHttpRequest)
  10. {
  11. var request = new XMLHttpRequest();
  12. return request;
  13. }
  14. else
  15. {
  16. alert("Twoja przeglądarka nie wspiera AJAX!");
  17. return false;
  18. }
  19. }
  20. var licz = 0;
  21. var prezenter = "";
  22. function update_all()
  23. {
  24. request = ajaxObject()
  25. request.open("get", "/content/theme/templates/staty.php?mode=ok&ip='.$userdata['ip_serwer'].'&port='.$userdata['port_serwera'].'&version='.$userdata['wersja_serwer'].'&" + (new Date()).getTime(), true);
  26. request.onreadystatechange = function()
  27. {
  28. if(request.readyState == 4){
  29. licz+=1;
  30. var scInfo = request.responseText.split("\n");
  31.  
  32. document.getElementById("prezenter").innerHTML = scInfo[0];
  33. document.getElementById("audycja").innerHTML = scInfo[1];
  34. document.getElementById("sluchaczy").innerHTML = scInfo[2];
  35. document.getElementById("piosenka").innerHTML = scInfo[6];
  36. if(prezenter !== scInfo[0]){
  37. if(prezenter !== "")
  38. {
  39. if(scInfo[0] == null || scInfo[0] == "undefined")
  40. notifyMe("Błąd","Brak połączenia z panelem radiowym!");
  41. else if(scInfo[0] !== "Brak")
  42. notifyMe(scInfo[0],"Prowadzi teraz audycję");
  43. else
  44. notifyMe("Informacja","Aktualnie nikt nie nadaje!");
  45. }
  46. prezenter = scInfo[0];
  47. pop1 = 1;
  48. } else {
  49. pop1 = 0;
  50. }if(licz >= 15 && pop1 !== 1)
  51. {
  52. notifyMe("Informacja","Aktualna liczba słuchaczy: " + scInfo[2]);
  53. licz = 0;
  54. }
  55. }
  56. }
  57. request.send(null);
  58. setTimeout("update_all();", 20000);
  59. }
  60. setTimeout("update_all();", 20000);


A konsola jak sprawdzam to console.log(scInfo); pokazuje mi w array() takie informację
  1. Array [ "Radio MixWave" ]


i teraz jak robić, żeby mi się pojawiło to w taki sposób ze pokarze się wszystko pod innym numerkiem

scInfo[0];
scInfo[1];
scInfo[2];
itd

Walczę z tym już kolejne dni i nie mogę już chyba wszystkiego próbowałem, proszę pomórzcie mi.
nospor
nic nie kumam. Pokazujesz jakis kod js ktory sle ajaxa, ale kod ktory generuje zwrotke dla ajaxa to juz nie. wiec skad mamy wiedziec co ten kod php zle robi?
pawel06281990
Kod którego używam to ten

  1. $ch = curl_init();
  2. curl_setopt($ch, CURLOPT_URL, 'https://'.$_GET['ip'].':'.$_GET['port'].'/stats?sid=1&json=1');
  3. curl_setopt($ch, CURLOPT_HEADER, 0);
  4. curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
  5. curl_setopt($ch, CURLOPT_TIMEOUT, 3);
  6. $curl_exec = curl_exec($ch);
  7. $stats = json_decode($curl_exec);
  8. curl_close($ch);


A Pobieram zapytania tak

  1. echo $stats->servertitle;
  2. echo $stats->currentlisteners;


Ale skrypt łączy to w jedno i mam coś takiego

  1. Array [ "Gra Autopilot JanekRadio MixWave" ]
  2. &#8203;
  3. 0: "Gra Autopilot JanekRadio MixWave"
  4. &#8203;


A powinno wyglądać tak
  1. Array [ "Gra Autopilot Janek" ],["Radio MixWave"]
  2. &#8203;
  3. 0: "Gra Autopilot Janek",
  4. 1: "Radio MixWave",
nospor
jak chcesz miec tablice na zwrotce, to masz wysylac JSON cos ala


$data = ['twoja', 'tablica','z danymi'];
header('Content-Type: application/json; charset=utf-8');
echo json_encode($data);

a kod JS ma potem tego JSON oderbac (https://www.geeksforgeeks.org/how-to-get-json-response-in-ajax/). I po sprawie
pawel06281990
Zrobiłem jak mówiłeś, ale coś niedziła mam coś takiego w konsoli przeglądarki

Array [ '["Gra Autopilot Janek","Radio MixWave"]' ]

A zrobiłem to tak

  1. $ch = curl_init();
  2. curl_setopt($ch, CURLOPT_URL, 'https://'.$_GET['ip'].':'.$_GET['port'].'/stats?sid=1&json=1');
  3. curl_setopt($ch, CURLOPT_HEADER, 0);
  4. curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
  5. curl_setopt($ch, CURLOPT_TIMEOUT, 3);
  6. $curl_exec = curl_exec($ch);
  7. $stats = json_decode($curl_exec);
  8. curl_close($ch);
  9.  
  10.  
  11. $staty_radia =[$stats->servergenre,$stats->servertitle];
  12. header('Content-Type: application/json; charset=utf-8');
  13. echo json_encode($staty_radia);


Domyślam się ze coś źle??
nospor
no ale kod JS tez musisz dostosowac do odbioru JSON, powiedziec ze spodziewasz sie JSON itp. Podalem ci linka do przykladu jak to jest robione

no i przedewszystkim juz masz nie dzeilic zwrotki przez nowe linie

To wypada
var scInfo = request.responseText.split("\n");

bo twoj kod to juz JSON. W linku masz przyklad jak odebraz ten JSON
pawel06281990
Dzięki za pomoc zrobiłem tak jak powinno być wielkie dzięki za podpowiedź.
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-2024 Invision Power Services, Inc.