Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Jak przechwycić dane pobrane AJAXe'm?
Forum PHP.pl > Forum > PHP
epeaxx
Witam, potrzebowałem prostego skryptu powiązania dwóch pól select w formularzu ze sobą, znalazłem coś takiego

Kod
http://www.php.rk.edu.pl/w/p/powizane-pola-select-wykorzystujce-ajaxa/


i sprawuje się bardzo dobrze lecz mam pewien problem z tym, aby później dane z drugiego pola select (to pole się zmienia w zależności od wybranej wartości w polu pierwszym) przesłać POST'em dalej ponieważ te dane są wyświetlane w locie i do kodu strony nie zostają one wprowadzone. Ma ktoś jakieś pomysły?
mortus
W przykładzie, który nam pokazałeś dane są dodawane do kodu strony tak jak powinny być (tzn. wraz ze zmianą struktury DOM). Właściwie wszystko powinno działać jak należy, dlatego musiałeś coś sknocić w swoim skrypcie. Pokaż kod.
epeaxx
Kod jest ten sam co w tym pliku bo po prostu użyłem kopiuj / wklej i jedyne co zmieniłem to sposób połączenia z bazą danych (wykorzystanie tej klasy o której pisze autor zamieniłem sobie na połączenie przez bibliotekę PDO) i to wszystko. Skrypt działa na 100% dobrze i nie ma błędów podczas połączenia bo firebug w kolsoli nie wyświetla żadnych błędów, a na ekranie również po zmianie wartości pola pierwszego zmienia się zawartość drugiego i jedyne co jest przesyłane między plikiem w którym jest formularz, a plikiem do którego odwołuje się Ajax i pobiera dane z bazy to wartość jednej zmiennej, która zawiera id elementów, które mają być pobrane.

Nie jestem tak do końca pewien czy te dane są dodawane do kodu strony bo w ogóle z tego co widzę nie są tworzone kolejne pola typu:

Cytat
<option value='id'>wartosc</option>


tylko jak sam możesz zobaczyć na stronie do której link podałem jest coś takiego:

echo "obj.options[obj.options.length] = new Option('".$i['miasto']."','".$i['id']."');

więc jak sam widzisz dane w takiej formie są przekazywane AJAX'em do pliku gdzie jest fomularz, a nie pola option. Nie znam AJAX'a i mogę się mylić ale mam pytanie (być może dla ciebie głupie ale ja tego nie ogarniam do końca), mógłbyś mi powiedzieć na po czym poznałeś to, że powinna być zmieniona struktura dokumentu? Czy może testowałeś i u ciebie zmienia się.

EDIT: Właśnie sprawdziłem i skopiowałem kod ze strony na dysk bez żadnych przeróbek i niestety ale nie są dodawane do kodu żadne dane więc musi być jakiś inny sposób na ich wyciągnięcie.
mortus
To co zwraca PHP poprzez AJAX jest później przepuszczane przez JavaScript-ową funkcję eval(). Działa ona tak samo, jak eval() w PHP, tzn. ewaluuje instrukcje (w tym przypadku kod JS) zapisane jako łańcuch znaków.
Cytat(epeaxx @ 25.10.2011, 19:03:00 ) *
EDIT: Właśnie sprawdziłem i skopiowałem kod ze strony na dysk bez żadnych przeróbek i niestety ale nie są dodawane do kodu żadne dane więc musi być jakiś inny sposób na ich wyciągnięcie.

Dziwne, bo ja również z ciekawości skopiowałem kod jak leci na mój dysk i wszystko działa.
epeaxx
To już sam nie wiem dlaczego u mnie tak się dzieje, stworzyłem dwa pliki index.php i getCities.php oraz wgrałem plik ajax.js, skopiowałem do poszczególnych plików dwa pierwsze listingi ale niestety na ekranie wyświetla mi się zawartość pół a w kodzie strony nic się nie zmienia. Masz może pomysły co może być przyczyną tego, że u ciebie to wszystko działa, a u mnie nie? Testowałem na najnowszym FF i Chrome i na obu to samo.

EDIT: A wiesz może jak wyciągnąć wartość value z pola option, które wybrał użytkownik w drugim polu? To bym sobie tą wartość przypisał do ukrytego pola hidden i bym nim przekazał interesującą mnie wartość dalej.
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.