![]() ![]() |
Post
#1
|
|
|
Grupa: Zarejestrowani Postów: 253 Pomógł: 1 Dołączył: 26.08.2009 Skąd: Szczecin Ostrzeżenie: (10%)
|
Napisałem skrypt, który zarządza akcjami dziejącymi się pod wpływem zmian w polach select. Mam trzy takie pola i opcje każdego wynikają bezpośrednio z wcześniej podjętych akcji. Wszystko działa w powiedzmy 80% tak jak sobie tego życzę, dlatego mam do was prośbę, żebyście w miarę możliwości podpowiedzieli mi co robię źle, jak to zmienić, bo przyznaję, że w JS i AJAXIE siedzę od niedawna (ok. dwóch dni).
Najpierw podam kody, a potem podam moje uwagi, zastrzeżenia, co mi się w działaniu nie podoba i za czym mam dość spore problemy. test_skrypt.js (tam są funkcje JS): Kod function ls_1(nr) { if(window.XMLHttpRequest){ xmlhttp = new XMLHttpRequest(); } else{ xmlhttp = new ActiveXObject("Microsoft.XMLHTTP"); } xmlhttp.onreadystatechange = function() { if(xmlhttp.readyState==4 && xmlhttp.status==200){ document.getElementById("selector_c").innerHTML=xmlhttp.responseText; } } xmlhttp.open("GET","../dynamic.php?ls="+nr,true); xmlhttp.send(); } function ls_2(nr) { if(window.XMLHttpRequest){ xmlhttp = new XMLHttpRequest(); } else{ xmlhttp = new ActiveXObject("Microsoft.XMLHTTP"); } xmlhttp.onreadystatechange = function() { if(xmlhttp.readyState==4 && xmlhttp.status==200){ document.getElementById("selector_l").innerHTML=xmlhttp.responseText; } } xmlhttp.open("GET","../dynamic.php?ls2="+nr,true); xmlhttp.send(); } dynamic.php (tutaj wykonuję wszelkie polecenia które mają coś zmienić):
fragment kodu gdzie mam pola select:
A teraz moje spostrzeżenia, uwagi, czy też pytania: 1. Czy da się jakoś te dwie funkcje JS (ls_1 i ls_2) zamknąć w jedną, bo przyznaję, że coś kombinowałem z ifami ale jakoś nie wyszło. 2. Gdy już działa wszystko to w momencie, kiedy wybieram opcję w pierwszym select to wtedy w drugim mam normalnie trzy opcje plus pole t2 (czyli to po else w dynamic.php dot. drugiego selecta) Dlatego właśnie dodałem te t1 i t2, żeby łatwiej było zlokalizować błąd, ale to jakoś nic mi szczególnie nie dało i może wy coś widzicie co pominąłem, bo w gruncie rzeczy nie chciał bym, żeby to tak było (mają być tylko trzy pola i tyle). 3. To już ostatnia rzecz, która przyznaję dosyć mocno mnie zaskoczyła, a mianowicie gdy juz mam wybraną opcję w select 1 i 2 to wtedy w select 3 pojawia mi się t1 (czyli to z pierwszego selecta w dynamic.php) a ten select w ogóle ma nie korespondować z select 3. Co to może być? Domyślam się, że dużo napisałem i dla wielu z was jest to zapewne bardzo proste, ale jak już mówiłem dopiero zaczynam JS i AJAXA tak więc liczę na wsparcie i zrozumienie. |
|
|
|
Post
#2
|
|
|
Grupa: Zarejestrowani Postów: 63 Pomógł: 16 Dołączył: 21.03.2009 Ostrzeżenie: (0%)
|
Cytat 2. Gdy już działa wszystko to w momencie, kiedy wybieram opcję w pierwszym select to wtedy w drugim mam normalnie trzy opcje plus pole t2 (czyli to po else w dynamic.php dot. drugiego selecta) Dlatego właśnie dodałem te t1 i t2, żeby łatwiej było zlokalizować błąd, ale to jakoś nic mi szczególnie nie dało i może wy coś widzicie co pominąłem, bo w gruncie rzeczy nie chciał bym, żeby to tak było (mają być tylko trzy pola i tyle). konstrukcja Twojego ifa (specjalnie wcinam): Kod if($_GET['ls2']!=null){ $q=$_GET['ls2']; switch($q){ ... } }else{ echo'<option value="0">t2</option>'; } wszak do else wchodzisz (IMG:style_emoticons/default/smile.gif) reasumując wywal else z obu ifów Cytat 1. Czy da się jakoś te dwie funkcje JS (ls_1 i ls_2) zamknąć w jedną, bo przyznaję, że coś kombinowałem z ifami ale jakoś nie wyszło. da się przykładowo tak: Kod function ls(nr,zm){ ... xmlhttp.open("GET","dynamic.php?ls="+nr+"&zm="+zm,true); xmlhttp.send(); } dodałem dodatkową zmienną zm. Wywołuję ją w Twoim php tak: Kod onchange="ls(this.value,\'ls\')" a w odpytywanym pliku robię: Kod <? //Dotyczy pierwszego pola select if($_GET['zm']=='ls'){ $p=$_GET['ls']; ... } //Dotyczy drugiego pola select if($_GET['zm']=='ls2'){ $q=$_GET['ls2']; ... } ?> Cytat 3. To już ostatnia rzecz, która przyznaję dosyć mocno mnie zaskoczyła, a mianowicie gdy juz mam wybraną opcję w select 1 i 2 to wtedy w select 3 pojawia mi się t1 (czyli to z pierwszego selecta w dynamic.php) a ten select w ogóle ma nie korespondować z select 3. Co to może być? po zmienieniu 2 problem ten zniknie Maciej Ten post edytował Scalak 16.12.2010, 00:46:55 |
|
|
|
Post
#3
|
|
|
Grupa: Zarejestrowani Postów: 253 Pomógł: 1 Dołączył: 26.08.2009 Skąd: Szczecin Ostrzeżenie: (10%)
|
Dzięki wielkie. Własnie o coś takiego mi chodziło.
|
|
|
|
![]() ![]() |
|
Aktualny czas: 22.12.2025 - 23:41 |