Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [AJAX][MySQL][PHP]Pobieranie danych mysql w tle
Forum PHP.pl > Forum > Przedszkole
ghastblood
Witam mam takie problem potrzebuje wyświetlić odpowiednie dane po wybraniu odpowiedniej opcji z pola select. Jako tako znam javascript i ajax. Ale nie wystarczająco więc znalazłem sobie kod w internecie.

  1. var xmlhttp;
  2.  
  3.  
  4. function showPart(str)
  5. {
  6. xmlhttp=GetXmlHttpObject();
  7. var url= "baza.php";
  8. url=url+"?part="+str;
  9. url=url+"&sid="+Math.random();
  10. xmlhttp.onreadystatechange=stateChanged;
  11. xmlhttp.open("GET",url,true);
  12. xmlhttp.send(null);
  13. }
  14.  
  15. function stateChanged()
  16. {
  17.  
  18. if (xmlhttp.readyState==4)
  19. {
  20.  
  21. document.getElementById("info").innerHTML=xmlhttp.responseText;
  22. }
  23. }
  24.  
  25. function GetXmlHttpObject()
  26. {
  27.  
  28. if (window.XMLHttpRequest)
  29. {
  30. return new XMLHttpRequest();
  31. }
  32. return null;
  33. }


tylko że potrzebuje wykorzystać go na wielu innych stronach np test.php?id=1 i test.php?id=2 oraz wyświetl.php więc myśliłem sobie że w php wprowadzę zmienna z nazwa pliku który wykorzystuje do komunikacji z mysql tylko że jak podmieniam url = "baza.php"; na url = $plik; to skrypt przestaje działać w konsoli w firebugu nie ma żanego błędu związanego z tym. Pomocy

Nikt nie jest w stanie mi pomóc ?
!*!
W JS nie działają zmienne z PHP bezpośrednio.Możesz to zrobić np. tak:
  1. var url= "<?php echo $plik;?>";


Taki kod zadziała, gdy masz go w html/php, a nie w osobnym pliku js.
ghastblood
To jak powinno to być zrobione żeby działało z poziomu pliku *.js
artuross
Tak sie nie da, .js sam sobie nie dopisze URI z nikad, on musi gdzies istniec, jak chcesz uzyskac kontretny URI to musisz najpierw ten .js przeparsowac interpreterem PHP, a wtedy $url zostanie zamieniony na jaki tam sobie wymarzysz smile.gif

A co do .js bezposrednio, mozesz ten adres URI pobrac z atrybutu action formularza.
!*!
W html umieść na początku kod JS, który będzie deklarował tę zmienną, a dopiero później wczytaj resztę plików. To jedyny, sensowny wariant.
jaslanin
a nie wystarczy po prostu podać relatywnej ścieżki, i tak przecież żądania AJAX podlegają same origin policy: http://en.wikipedia.org/wiki/Same_origin_p...rmination_rules więc nie odpytasz się ajaxem o jakąś inną domenę.

z mojego doświadczenia wynika że umieszczanie zmiennych HTML bezpośrednio powoduje więcej problemów niż rozwiązuje bo potem trzeba robić specjalny routing do przekazywania odpowiednich zmiennych w odpowiednich miejscach i potem straszna sieczka się z tego robi. Np. gdzieś masz kod JS potrzebujących zmiennych JS w HTML i chcesz go mieć na innej stronie. I teraz musisz się martwić by to wszystko dobrze przekazywać.

O wiele lepiej trzymać się zasady, że zmienne ładujesz przez AJAX poprzez jakieś RESTowe API albo potrzebne dane masz w HTML i je wyłuskujesz sobie w trakcie wykonywania JS. Wtedy jest mniej problemów zwłaszcza przy większych aplikacjach.
artuross
Dlatego napisalem, aby ladowal parametru action formularza, uzytkownik z wylaczonym JS dzieki temu tez sobie poradzi (szczegolnie, jesli jest to user mobilnej przegladarki, a'la Opera).
Ladowanie tylko jednej zmiennej z AJAX'a?
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.