Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [AJAX][PHP][jQuery], pobranie danych z bazy
gawar
post
Post #1





Grupa: Zarejestrowani
Postów: 123
Pomógł: 0
Dołączył: 26.10.2010

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


Witam,
Od jakiegoś czasu borykam się z problem wyciągnięcia danych z bazy MySQL za pomocą jQuery i AJAXa.
Dane chciałbym pobierać w momencie gdy użytkownik najedzie na jakiś obiekt na stronie. Napisałem do tego funkcje w jQuery:
  1. $("rect").bind("hover", function() {
  2. var identyfikator = "";
  3. if ($(this).attr("id") != null) {
  4. identyfikator = $(this).attr("id");
  5. $.ajax({
  6. url:"func_id.php",
  7. data:{"func_id": identyfikator}
  8. });
  9. $.getJSON("func_id.php", function(json) {
  10. $.each(json.result, function() {
  11. var info='sektor' + this['sektor'] + 'rzad' + this['rzad']+ 'miejsce' + this['miejsce'];
  12. alert($(this).text() + " " + info);
  13. })
  14. });
  15. });
  16. });

Moja funkcja w pliku func_id.php wygląda następująco:
  1. <?php
  2. function func_id($id_miejsce) {
  3.  
  4. require_once ('polacz.php');
  5.  
  6. $sprawdzenie = $sth->prepare('SELECT sektor, rzad,miejsce,
  7.  
  8. FROM t_miejsce
  9.  
  10. WHERE id_miejsce=:id_miejsce');
  11.  
  12. $sprawdzenie->bindValue(':id_miejsce',$id_miejsce,PDO::PARAM_INT);
  13.  
  14. $sprawdzenie->execute();
  15.  
  16.  
  17. $result = $sprawdzenie->fetchAll();
  18. $jso= json_encode(array("result"=>$result));
  19.  
  20.  
  21. return $jso;
  22. }
  23. ?>

chciałbym aby po najechaniu myszką na obiekt rect, pobrały się dane z bazy dla tego konkretnego obiektu i wyświetliły się w okienku alert. Nie wiem czy wywołanie tej funkcji w jquery jest poprawne czy samo wyświetlenie tych danych zawodzi. Jestem początkującym jeżeli chodzi o jquery i ajax dlatego bardzo proszę o pomoc.

Ten post edytował gawar 23.03.2015, 12:30:25
Go to the top of the page
+Quote Post
2 Stron V   1 2 >  
Start new topic
Odpowiedzi (1 - 19)
10log
post
Post #2





Grupa: Zarejestrowani
Postów: 11
Pomógł: 2
Dołączył: 28.02.2008

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


JSON co wróci z requesta trzeba by przeparsować w handlerze, który dasz np do done(callback).

  1. $.ajax({
  2. url:"func_id.php",
  3. data:{"func_id": identyfikator}
  4. }).done(function(data){
  5. //w data powinien byc json
  6. });


Druga sprawa php powinno zwrócic dane przez echo a nie return. I jeszcze wywal tą funkcje func_id a parametr $id_miejsce pobierz z $_GET bo to jest domyślna metoda wysyłania funkcji ajax.

A w ogóle to albo rób przez ajax albo getJSON smile.gif

Ten post edytował 10log 23.03.2015, 12:52:27
Go to the top of the page
+Quote Post
snerf
post
Post #3





Grupa: Zarejestrowani
Postów: 74
Pomógł: 3
Dołączył: 30.03.2014

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


A ja proponuję pobrać najpierw to co chcesz ukryć w divie pod danymrekordem a potem po najechaniu myszką użyć jquery show and hide.
Nie dość ze będzie działać szybciej to nie zajedziesz bazy. Tylko Niewiem czy możesz sobie pozwolić na taki sposób

Pozdrawiam
Go to the top of the page
+Quote Post
gawar
post
Post #4





Grupa: Zarejestrowani
Postów: 123
Pomógł: 0
Dołączył: 26.10.2010

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


snerf to było by chyba bardzo nie optymalne rozwiązanie ładować do diva np 1000 rekordów z bazy.
10log poprawiłem, ale dalej nie chce działać. Nie mam doświadczenie w tym i nie wiem jak wyszukiwać błędów w kodzie. Może ktoś podpowie jak?

Oto kod po aktualizacji:

  1. <?php
  2.  
  3. $id_miejsce = $_GET['id_miejsce'];
  4.  
  5. require_once ('polacz.php');
  6.  
  7. $sprawdzenie = $sth->prepare('SELECT sektor, rzad,miejsce
  8.  
  9. FROM t_miejsce
  10.  
  11. WHERE id_miejsce=:id_miejsce');
  12.  
  13. $sprawdzenie->bindValue(':id_miejsce',$id_miejsce,PDO::PARAM_INT);
  14.  
  15.  
  16.  
  17. $sprawdzenie->execute();
  18.  
  19. $result = $sprawdzenie->fetchAll();
  20. echo json_encode(array("result"=>$result));
  21.  
  22.  
  23. ?>

  1. $(document).ready(function(){
  2. $("rect").bind("click", function() {
  3.  
  4. var identyfikator = "";
  5.  
  6. if ($(this).attr("id") != null) {
  7.  
  8. identyfikator = $(this).attr("id");
  9. //alert($(this).text() + " " + identyfikator);
  10. $.ajax({
  11. type:"GET",
  12. url:"func_id.php",
  13. dataType:'json',
  14. data:{"id_miejsce": identyfikator},
  15. success:function(json){
  16. var info='sektor' + this['sektor'] + 'rzad' + this['rzad']+ 'miejsce' + this['miejsce'];
  17. alert($(this).text() + " " + info);
  18. };
  19. error: function() {
  20. alert('wystąpił błąd ');
  21. };
  22.  
  23. });
  24. }
  25.  
  26. });
  27. });
Go to the top of the page
+Quote Post
Turson
post
Post #5





Grupa: Zarejestrowani
Postów: 4 291
Pomógł: 829
Dołączył: 14.02.2009
Skąd: łódź

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


Przeanalizuj żądanie AJAX'owe http://blog.turson.pl/jquery-ajax-analiza-...rkowej-konsoli/
Sprawdź co wysyłasz i co dostajesz
Go to the top of the page
+Quote Post
gawar
post
Post #6





Grupa: Zarejestrowani
Postów: 123
Pomógł: 0
Dołączył: 26.10.2010

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


Testowałem tak, żądanie w ogóle nie startuje:(
Go to the top of the page
+Quote Post
viking
post
Post #7





Grupa: Zarejestrowani
Postów: 6 380
Pomógł: 1116
Dołączył: 30.08.2006

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


Żądanie się nie wysyła?
$("rect") - tu na pewno element rect a nie jakiś id?


--------------------
Go to the top of the page
+Quote Post
gawar
post
Post #8





Grupa: Zarejestrowani
Postów: 123
Pomógł: 0
Dołączył: 26.10.2010

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


$("rect") -tak ma być, na samym alercie to działało prawidłowo.
Go to the top of the page
+Quote Post
Forti
post
Post #9





Grupa: Zarejestrowani
Postów: 655
Pomógł: 73
Dołączył: 2.05.2014

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


Wątpię aby to tak dzialalo. Tam na pewno byla . Lub #


--------------------
Overwatch24 - najbardziej zaawansowany Polski portal Overwatch od fanów dla fanów.

Fachowo.co

Behance.net/fachowo
Go to the top of the page
+Quote Post
10log
post
Post #10





Grupa: Zarejestrowani
Postów: 11
Pomógł: 2
Dołączył: 28.02.2008

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


  1. success:function(json){
  2. var info='sektor' + this['sektor'] + 'rzad' + this['rzad']+ 'miejsce' + this['miejsce'];
  3. alert($(this).text() + " " + info);
  4. };
  5. error: function() {
  6. alert('wystąpił błąd ');


Po funkcji success ma być przecinek a nie średnik a po funkcji error ma już nic nie być. Nawet średnika.
Takie błędy są widoczne w konsoli.
Go to the top of the page
+Quote Post
gawar
post
Post #11





Grupa: Zarejestrowani
Postów: 123
Pomógł: 0
Dołączył: 26.10.2010

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


10log - dziękuję, rzeczywiście błąd był z tym przecinkiem i średnikiem. Ale po wykonaniu funkcji czyli kliknięciu na prostokąt pojawia się alert z błędem -> alert('wystąpił błąd ');
Czyli nie ma tak oczekiwanego success... jak to rozwiązać? Czy źle odbieram dane? bo przekazuje poprawnie (według przeglądarki).
Odnośnie
Cytat
Takie błędy są widoczne w konsoli.
to możesz coś więcej napisać jak to sprawdzać?
Go to the top of the page
+Quote Post
Turson
post
Post #12





Grupa: Zarejestrowani
Postów: 4 291
Pomógł: 829
Dołączył: 14.02.2009
Skąd: łódź

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


Jak jest error to możliwe, że masz błędny adres żądania. Dałem Ci link jak sprawdzić co idzie przez AJAX, dokąd idzie, co zwraca, jaki jest status. W Firebugu (ew. F12) masz konsolę też
Go to the top of the page
+Quote Post
com
post
Post #13





Grupa: Zarejestrowani
Postów: 3 034
Pomógł: 366
Dołączył: 24.05.2012

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


do jsona przekazujesz tablice tablic , tak ma być? smile.gif
Go to the top of the page
+Quote Post
gawar
post
Post #14





Grupa: Zarejestrowani
Postów: 123
Pomógł: 0
Dołączył: 26.10.2010

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


poprawiłem tą tablice
  1. echo json_encode($result);
. Cały czas wyskakuje mi błąd. A jak patrze w konsoli to jest zawartość odpowiedzi zgodna z tym co pobieram. Dodatkowo pojawia się jeszcze ReferenceError: blad is not defined - bo dodałem console.log(blad); ale to mi nic nie mówi.

Go to the top of the page
+Quote Post
com
post
Post #15





Grupa: Zarejestrowani
Postów: 3 034
Pomógł: 366
Dołączył: 24.05.2012

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


no bo nie ma takiej zmiennej jak blad u Ciebie
Go to the top of the page
+Quote Post
gawar
post
Post #16





Grupa: Zarejestrowani
Postów: 123
Pomógł: 0
Dołączył: 26.10.2010

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


ok mój błąd. Ale i tak to nie działa cały czas pojawia się alert z error z:
  1. function() {
  2. alert('wystąpił błąd ');
  3. }


Ten post edytował gawar 24.03.2015, 13:35:13
Go to the top of the page
+Quote Post
10log
post
Post #17





Grupa: Zarejestrowani
Postów: 11
Pomógł: 2
Dołączył: 28.02.2008

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


Jeśli ciągle zwraca error tzn., że request się nie powiódł.

Jak używasz Chrome to wybierz menu->więcej narzędzi->narzędzia dla programistów, pokaże Ci się fajne narzędzie, gdzie możesz sprawdzić co się dzieje.
Wybierz zakładkę network, przeładuj stronę i zobaczysz wszystkie requesty. Zaznaczone na czerwono to te, które się nie powiodły. Znajdź swój i zobacz co tam jest napisane.

W Firefox ktoś już Ci podpowiedział F12, nawet IE ma narzędzia dla programistów, też pod F12.

Ten post edytował 10log 24.03.2015, 14:44:41
Go to the top of the page
+Quote Post
gawar
post
Post #18





Grupa: Zarejestrowani
Postów: 123
Pomógł: 0
Dołączył: 26.10.2010

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


Wydaje mi się że się powiódł...tylko problem może jest z wyświetleniem tych danych.
To wypluwa konsola.
Zawartość odpowiedzi Δ0ms
 [{"sektor":"1","rzad":"1","miejsce":"1"}]
a cała funkcja wygląda tak:
  1. $(document).ready(function(){
  2. $("rect").bind("click", function() {
  3.  
  4. var identyfikator = "";
  5.  
  6. if ($(this).attr("id") != null) {
  7.  
  8. identyfikator = $(this).attr("id");
  9. //alert($(this).text() + " " + identyfikator);
  10. $.ajax({
  11. type:"GET",
  12. url:"./func_id.php",
  13. dataType:"json",
  14. data:{"id_miejsce": identyfikator},
  15. success : function(json){
  16.  
  17.  
  18.  
  19. alert( json['sektor'] + "\n" + json['rzad']+ "\n" + json['miejsce']);
  20. },
  21. error: function() {
  22. alert('wystąpił błąd ');
  23.  
  24. }
  25.  
  26. });
  27. }
  28.  
  29. });
  30. });
Go to the top of the page
+Quote Post
10log
post
Post #19





Grupa: Zarejestrowani
Postów: 11
Pomógł: 2
Dołączył: 28.02.2008

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


Skoro w odpowiedzi dostajesz [{"sektor":"1","rzad":"1","miejsce":"1"}] to może json[0]['sektor']?
Go to the top of the page
+Quote Post
gawar
post
Post #20





Grupa: Zarejestrowani
Postów: 123
Pomógł: 0
Dołączył: 26.10.2010

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


tak też nie działa. Pewnie jest to jakaś pierdoła:(
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 21.08.2025 - 13:21