Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Zmienne PHP jako parametry JS
Forum PHP.pl > Forum > XML, AJAX
Odoakr
Witajcie!

Odpytuję bazę danych postres używając AJAX.


  1. function pobierz_wspolrzedne(obreb,nr) // funkcja pobiera współrzędne z bazy
  2.  
  3. {
  4.  
  5.  
  6. if (window.XMLHttpRequest)
  7. {// code for IE7+, Firefox, Chrome, Opera, Safari
  8. xmlhttp=new XMLHttpRequest();
  9. }
  10. else
  11. {// code for IE6, IE5
  12. xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
  13. }
  14. xmlhttp.onreadystatechange=function()
  15. {
  16. if (xmlhttp.readyState==4 && xmlhttp.status==200)
  17. {
  18.  
  19. document.getElementById("test").innerHTML=xmlhttp.responseText;
  20.  
  21. }
  22. }
  23.  
  24. xmlhttp.open("GET","ajax.php?obreb="+obreb+"&nr="+nr,true);
  25. xmlhttp.send();
  26. }


jak zrobić, żeby zmienne, które otrzymuje jako xmlhttp.responseText uzyć jako parametry inne funkcji JS? np w funkcji map.zoomToPoint(xcoord,ycoord)


ajax.php
  1. <?php
  2. $obreb=$_GET["obreb"];
  3. $nr=$_GET["nr"];
  4.  
  5.  
  6.  
  7. $dbconn = pg_connect ("host=localhost port=5432 dbname=webtest user=postgres password=1q2w3e");
  8. if (!$dbconn) {
  9. die("Error in connection: " . pg_last_error());
  10. }
  11.  
  12. $query = "SELECT \"XCOORD\", \"YCOORD\" FROM final WHERE \"OBREB\" = '".$obreb."' and \"NR\" = '".$nr."'";
  13.  
  14.  
  15. $result = pg_query($dbconn, $query);
  16. if (!$result) {
  17. die("Error in SQL query: " . pg_last_error());
  18. }
  19. //$liczba_wierszy = pg_num_rows($result);
  20. //echo $liczba_wierszy;
  21.  
  22. while ($row = pg_fetch_array($result)) {
  23. $XCOORD = $row[0] ;
  24. $YCOORD = $row[1] ;
  25. }
  26. ?>
Fifi209
Normalnie? Nie wiem czego nie rozumiesz, zamiast przypisywać to po prostu przekaż do innej funkcji?
Odoakr
Byłbym wdzięczny za fragment kodu, który by wyjaśnił owo "normalnie":)
gargamel
Najlepiej żeby plik ajax.php generował Ci dane w formacie JSON.
W skrócie chodzi o to aby zmienne z PHP wyprintować (poprzez echo) w owym pliku.
Jeśli np w ajax.php wyjściowe masz $XCOORD i $YCOORD to na koniec potrzebujesz wtedy dać:
  1. echo "{ \"zmienna_x\":\"$XCOORD\", \"zmienna_y\":\"$YCOORD\"}";

Niech $XCOORD = 12 i $YCOORD = 20. Otrzymasz wtedy:
Kod
{"zmienna_x":"12", "zmienna_y":"20"}

To jest własnie format JSON, który masz odebrać w swojej funkcji pobierz_wspolrzedne i odpowiednim zmiennym, przypisać odpowiednie wartości.
Ogólnie poczytaj właśnie o AJAX + JSON, chociażby tu: http://webmade.org/porady/json-js.php
Odoakr
Wielkie dzięki! Tego szukałem - jutro sprawdzę, czy działa:)

Nieststy dalej jest problem...

  1. var json_tekst = HTTPrequest.responseText;
  2. alert("sprawdzenie");
  3. var coord = eval(json_tekst);
  4.  
  5. alert(coord.zmienna_x);
  6.  


Firebug rozpoznaje odpowiedź jako obiekt json (w konsoli pojawia się zakładka JSON) ale skrypt w tym momencie sie zatrzymuje... alert("sprawdzenie") już się nie wykonuje:(
gargamel
Na samym początku pliku ajax.php, daj nagłówki:
  1. header('Cache-Control: no-cache, must-revalidate');
  2. header('Expires: Mon, 26 Jul 1997 05:00:00 GMT');
  3. header('Content-type: application/json; charset=UTF-8');

Napisz czy pomogło.
Odoakr
niestety - to samo. podrzucam jeszcze kody:

ajax.php
  1. <?php
  2. header('Cache-Control: no-cache, must-revalidate');
  3. header('Expires: Mon, 26 Jul 1997 05:00:00 GMT');
  4. header('Content-type: application/json; charset=UTF-8');
  5.  
  6.  
  7. $obreb=$_GET["obreb"];
  8. $nr=$_GET["nr"];
  9.  
  10.  
  11.  
  12. $dbconn = pg_connect ("host=localhost port=5432 dbname=webtest user=postgres password=1q2w3e");
  13. if (!$dbconn) {
  14. die("Error in connection: " . pg_last_error());
  15. }
  16.  
  17. $query = "SELECT \"XCOORD\", \"YCOORD\" FROM final WHERE \"OBREB\" = '".$obreb."' and \"NR\" = '".$nr."'";
  18.  
  19.  
  20. $result = pg_query($dbconn, $query);
  21. if (!$result) {
  22. die("Error in SQL query: " . pg_last_error());
  23. }
  24. //$liczba_wierszy = pg_num_rows($result);
  25. //echo $liczba_wierszy;
  26.  
  27. while ($row = pg_fetch_array($result)) {
  28. $XCOORD = $row[0] ;
  29. $YCOORD = $row[1] ;
  30. }
  31.  
  32. echo "{ 'zmienna_x':'$XCOORD', 'zmienna_y':'$YCOORD'}";
  33. ?>



html/js
  1. function pobierz_wspolrzedne(obreb,nr) // funkcja pobiera współrzędne z bazy
  2.  
  3. {
  4.  
  5. if (window.XMLHttpRequest)
  6. {// code for IE7+, Firefox, Chrome, Opera, Safari
  7. xmlhttp=new XMLHttpRequest();
  8. }
  9. else
  10. {// code for IE6, IE5
  11. xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
  12. }
  13. xmlhttp.onreadystatechange=function()
  14. {
  15. if (xmlhttp.readyState==4 && xmlhttp.status==200)
  16. {
  17.  
  18. var json_tekst = HTTPrequest.responseText
  19.  
  20. alert("sprawdzenie");
  21.  
  22. }
  23. }
  24.  
  25. xmlhttp.open("GET","ajax.php?obreb="+obreb+"&nr="+nr,true);
  26. xmlhttp.send();
  27. }
gargamel
A jakby średnik w 18 linii?
Odoakr
to nie to... nadal to samo. pomysł z wywaleniem był jednym z ostatnich desperackich kroków...
Tak wygląda odpowiedź w FireBug:


gargamel
To może inaczej. W ajax.php zamiast tego wszystkiego daj jakieś
  1. <?php
  2. echo "Test";
  3. ?>


W pliku html utwórz sobie gdzieś
  1. <div id="testBox"></div>


A w funkcji js daj
[JAVASCRIPT] pobierz, plaintext
  1. document.getElementById("testBox").innerHTML = HTTPrequest.responseText;
[JAVASCRIPT] pobierz, plaintext


To może pomoże zlokalizować problem.
Odoakr
http://www.geostrona.pl/ajax/test/roszczep.html

przechodzi, ale się nie wpisuje w div...
gargamel
Tam gdzie już odbierasz dane:
zamiast
[JAVASCRIPT] pobierz, plaintext
  1. HTTPrequest.responseText;
[JAVASCRIPT] pobierz, plaintext
daj
[JAVASCRIPT] pobierz, plaintext
  1. xmlhttp.responseText;
[JAVASCRIPT] pobierz, plaintext
Odoakr
Działa!
Wielkie dzięki!:)
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.