![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 21 Pomógł: 0 Dołączył: 16.12.2012 Ostrzeżenie: (0%) ![]() ![]() |
Cześć.
Nie mogę sobie poradzić z $.ajax w jquery. Pierwszy raz z tego korzystam. Podaje Wam kod. http://pastebin.com/vefK6DSY - plik osoba.php - znajduje się w folderze głównym http://pastebin.com/BMUbvWhN - plik start.js - jest w folderze "js" W pliku osoba.php w ogóle nie reaguje na przesyłane dane. Uznaje $warunki jako pustą zmienną. Proszę Was o pomoc. |
|
|
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 1 707 Pomógł: 266 Dołączył: 3.07.2012 Skąd: Poznań Ostrzeżenie: (0%) ![]() ![]() |
Dwie rady na początek:
|
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 21 Pomógł: 0 Dołączył: 16.12.2012 Ostrzeżenie: (0%) ![]() ![]() |
Jako obiekt javascript? Zrobiłem tak:
data : { plec : sz_plec, wiek_od : wiek_od, wiek_do : wiek_do } Zamieniłem na $.post i klikając na przycisk zupełnie nic się zmienia(nie wykonuje się pole success). |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 1 729 Pomógł: 346 Dołączył: 4.04.2009 Ostrzeżenie: (0%) ![]() ![]() |
Co masz w konsoli? Zapewne wystarczy, że do url dodasz / na początku
-------------------- |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 21 Pomógł: 0 Dołączył: 16.12.2012 Ostrzeżenie: (0%) ![]() ![]() |
W konsoli?
Z / bez efektu też. |
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 1 729 Pomógł: 346 Dołączył: 4.04.2009 Ostrzeżenie: (0%) ![]() ![]() |
Tak w konsoli np. w chrome f12 i patrzysz na network na to co wysyłasz/odbierasz a w console masz ewentualne błędy. w firefox prawy przycisk i zbadaj element zakładka Konsola www, a najlepiej zainstaluj plugin firebug w firefoxie i w nim popatrz w konsole.
-------------------- |
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 21 Pomógł: 0 Dołączył: 16.12.2012 Ostrzeżenie: (0%) ![]() ![]() |
W konsoli nie ma żadnych błędów.
Nie mam pojęcia już co jest nie tak. Dam jeszcze kod formularza, moze cos tam zepsulem, choc sprawdzalem kilka razy już.
Spróbowałem coś takiego: jQuery(document).ready(function() { $("#szukanie").click( function(){ $.ajax({ type:"post", url:"/osoba.php", data:"plec=Kobieta", success:function() { $(".osobka").fadeOut(1500); $(".osobka").fadeIn(); $(".osoba").load("osoba.php"); } }); }); }); I nie wykrywa mi w ogole w osoba.php, że $_POST['plec'] jest zapełnione. |
|
|
![]()
Post
#8
|
|
![]() Grupa: Zarejestrowani Postów: 587 Pomógł: 190 Dołączył: 5.02.2011 Skąd: 64-800 Ostrzeżenie: (0%) ![]() ![]() |
Skoro używasz load to w osoba.php musisz sformatować dane zwracane z bazy do postaci stringa, tak jak ma to byś wyświetlane i na końcu echo $string;
Wtedy load załaduje tak jak wyechowałeś w osoba.php |
|
|
![]()
Post
#9
|
|
Grupa: Zarejestrowani Postów: 21 Pomógł: 0 Dołączył: 16.12.2012 Ostrzeżenie: (0%) ![]() ![]() |
Nie zrozumiałem tego. Mógłbyś jakoś uprościć?
|
|
|
![]()
Post
#10
|
|
![]() Grupa: Zarejestrowani Postów: 587 Pomógł: 190 Dołączył: 5.02.2011 Skąd: 64-800 Ostrzeżenie: (0%) ![]() ![]() |
EDIT: W twoim przypadku jednak to nie przejdzie ponieważ load() to już inne zapytanie z pustą tablicą $_POST niż ajax, a więc nie przejdzie przez twoje if-y w osoba.php i albo baza wywali błędy albo nic nie zwróci. To powinno zadziałać:
Ten post edytował _Borys_ 16.08.2013, 03:11:48 |
|
|
![]()
Post
#11
|
|
Grupa: Zarejestrowani Postów: 21 Pomógł: 0 Dołączył: 16.12.2012 Ostrzeżenie: (0%) ![]() ![]() |
Niestety nie działa. Jeszcze zapytam, czy nie trzeba dawać dataType:"json"?
I drugie pytanie. Czy w tym $('.osoba').append(''); mam dać całą zawartość, która jest w pliku osoba_2.php w tej pętli z tablicą arr[] - razem z tymi if-ami ? Stworzyłem drugi plik(osoba_2.php), wygląda on tak:
jquery tak:
Po naciśnięciu inputa nic się nie dzieje. fadeIn i fadeOut nie pokazuje się. |
|
|
![]()
Post
#12
|
|
![]() Grupa: Zarejestrowani Postów: 587 Pomógł: 190 Dołączył: 5.02.2011 Skąd: 64-800 Ostrzeżenie: (0%) ![]() ![]() |
Drugi plik ma służyć tylko do pobierania danych z bazy i przetwarzania. Możesz tam formatować html z danymi, to co ma się wyświetlać w pierwszym pliku ale lepiej do jednego stringa i na końcu jednym echo wysyłasz to do ajaxa. Echo z drugiego pliku wysyła treść lub dane do ajaxa, tylko to co mu podasz. Znajdę czas to poprawię, w kilku miejscach namieszane teraz jest, przy pobieraniu z bazy i przy wstawianiu w ajaksie.
Zmień url w ajaxie bo zostawiłem swój. Ten post edytował _Borys_ 16.08.2013, 09:13:10 |
|
|
![]()
Post
#13
|
|
Grupa: Zarejestrowani Postów: 21 Pomógł: 0 Dołączył: 16.12.2012 Ostrzeżenie: (0%) ![]() ![]() |
Ok. Będę wdzięczny jakbyś znalazł potem czas jeszcze na to. Dzięki bardzo za pomoc
![]() |
|
|
![]()
Post
#14
|
|
![]() Grupa: Zarejestrowani Postów: 587 Pomógł: 190 Dołączył: 5.02.2011 Skąd: 64-800 Ostrzeżenie: (0%) ![]() ![]() |
Albo z bazy pobierasz sobie dane w postaci jsona tak jak poprzednio podałem a divy tworzysz i wypełniasz w jquery tymi danymi. Ten post edytował _Borys_ 16.08.2013, 09:38:23 |
|
|
![]()
Post
#15
|
|
Grupa: Zarejestrowani Postów: 21 Pomógł: 0 Dołączył: 16.12.2012 Ostrzeżenie: (0%) ![]() ![]() |
Gdy zrobiłem osoba.php tak jak na początku było i w js dałem append(msg) zamiast load('osoba.php'), to po wybraniu płci i nacisnieciu przycisku pokazały się osoby tylko wybranej płci, ale nie zostały usunięte wczesniejsze wyniki. Czyli jak w tabeli na początku było 30 osob, to po wybraniu plci. np meskiej pokazalo sie 50osob(jest 20 mezczyzn). Więc może mógłbym zostawić plik osoba.php tak jak był i coś w jquery zrobić, żeby poprzednie wyniki znikały. Jest może jakaś funkcja alternatywna dla append?
|
|
|
![]()
Post
#16
|
|
![]() Grupa: Zarejestrowani Postów: 587 Pomógł: 190 Dołączył: 5.02.2011 Skąd: 64-800 Ostrzeżenie: (0%) ![]() ![]() |
$('.osoba').html(msg);
|
|
|
![]()
Post
#17
|
|
Grupa: Zarejestrowani Postów: 21 Pomógł: 0 Dołączył: 16.12.2012 Ostrzeżenie: (0%) ![]() ![]() |
Działa wszystko już ok
![]() |
|
|
![]() ![]() |
![]() |
Aktualny czas: 21.08.2025 - 00:27 |