Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Zmienne PHP jako parametry JS
Odoakr
post
Post #1





Grupa: Zarejestrowani
Postów: 54
Pomógł: 0
Dołączył: 5.03.2008

Ostrzeżenie: (0%)
-----


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. ?>


Ten post edytował Odoakr 4.07.2011, 14:37:06
Go to the top of the page
+Quote Post
Fifi209
post
Post #2





Grupa: Zarejestrowani
Postów: 4 655
Pomógł: 556
Dołączył: 17.03.2009
Skąd: Katowice

Ostrzeżenie: (0%)
-----


Normalnie? Nie wiem czego nie rozumiesz, zamiast przypisywać to po prostu przekaż do innej funkcji?
Go to the top of the page
+Quote Post
Odoakr
post
Post #3





Grupa: Zarejestrowani
Postów: 54
Pomógł: 0
Dołączył: 5.03.2008

Ostrzeżenie: (0%)
-----


Byłbym wdzięczny za fragment kodu, który by wyjaśnił owo "normalnie":)
Go to the top of the page
+Quote Post
gargamel
post
Post #4





Grupa: Zarejestrowani
Postów: 278
Pomógł: 35
Dołączył: 25.06.2010

Ostrzeżenie: (0%)
-----


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

Ten post edytował gargamel 4.07.2011, 16:58:36
Go to the top of the page
+Quote Post
Odoakr
post
Post #5





Grupa: Zarejestrowani
Postów: 54
Pomógł: 0
Dołączył: 5.03.2008

Ostrzeżenie: (0%)
-----


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:(

Ten post edytował Odoakr 5.07.2011, 08:19:26
Go to the top of the page
+Quote Post
gargamel
post
Post #6





Grupa: Zarejestrowani
Postów: 278
Pomógł: 35
Dołączył: 25.06.2010

Ostrzeżenie: (0%)
-----


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.
Go to the top of the page
+Quote Post
Odoakr
post
Post #7





Grupa: Zarejestrowani
Postów: 54
Pomógł: 0
Dołączył: 5.03.2008

Ostrzeżenie: (0%)
-----


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. }
Go to the top of the page
+Quote Post
gargamel
post
Post #8





Grupa: Zarejestrowani
Postów: 278
Pomógł: 35
Dołączył: 25.06.2010

Ostrzeżenie: (0%)
-----


A jakby średnik w 18 linii?
Go to the top of the page
+Quote Post
Odoakr
post
Post #9





Grupa: Zarejestrowani
Postów: 54
Pomógł: 0
Dołączył: 5.03.2008

Ostrzeżenie: (0%)
-----


to nie to... nadal to samo. pomysł z wywaleniem był jednym z ostatnich desperackich kroków...
Tak wygląda odpowiedź w FireBug:


(IMG:http://geostrona.pl/ajax/json.png)

Ten post edytował Odoakr 5.07.2011, 10:34:43
Go to the top of the page
+Quote Post
gargamel
post
Post #10





Grupa: Zarejestrowani
Postów: 278
Pomógł: 35
Dołączył: 25.06.2010

Ostrzeżenie: (0%)
-----


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.
Go to the top of the page
+Quote Post
Odoakr
post
Post #11





Grupa: Zarejestrowani
Postów: 54
Pomógł: 0
Dołączył: 5.03.2008

Ostrzeżenie: (0%)
-----


http://www.geostrona.pl/ajax/test/roszczep.html

przechodzi, ale się nie wpisuje w div...
Go to the top of the page
+Quote Post
gargamel
post
Post #12





Grupa: Zarejestrowani
Postów: 278
Pomógł: 35
Dołączył: 25.06.2010

Ostrzeżenie: (0%)
-----


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


Ten post edytował gargamel 5.07.2011, 11:55:32
Go to the top of the page
+Quote Post
Odoakr
post
Post #13





Grupa: Zarejestrowani
Postów: 54
Pomógł: 0
Dołączył: 5.03.2008

Ostrzeżenie: (0%)
-----


Działa!
Wielkie dzięki!:)
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 4.10.2025 - 04:44