Autor | Zpráva | ||
---|---|---|---|
krteczek Profil |
#1 · Zasláno: 21. 12. 2006, 09:52:06
Dobrý den, chci si udělat pomocí AJAXu změny v select nabídce. Snažím se postupovat podle knížky: AJAX: Vytváříme vysoce interaktivní webové aplikace, je tam příklad: Dynamické načítání seznamů.
A z něj vycházím při řešení mého požadavku, ale mám problém... Mám select nabídku krajů, uživatel vybere kraj a do dalšího selectu se načtou města která jsou v tom kraji, (takhle by to mělo fungovat) Zatím mi funguje jen toto: 1. Po výběru kraje se sestaví get dotaz ve tvaru: stranka.php?kraj=[id vybraného kraje]&cas=[časové razítko] soubor je na: http://aj.jaknato.com/ 2. dotaz se odešle, stranka.php provede ověření poslaného id a sestaví takový xml strom:
soubor je zde: http://aj.jaknato.com/vrat-seznam-mest.php?kraj=4 (ještě nevím co vrátit v případě, že kraj s tímto id neexistuje) Původní servlet v javě z knihy jsem musel nahradit php skriptem (JAVU neumim) 3. Protože mi to nefunguje, rozházel jsem po javascriptu alerty a poslední který se mi vrátí je tento: ve funkci aktualizujSeznamMest() => hned po var mesto = document.getElementById("mesto"); a vrací: object HTMLSelectElement, Ale alert následující hned po var vysledky = xmlHttp.responseXML.getElementByTagName("mesto"); se už neozve, přičemž má následující kód vygenerovat <option value="3">Ostrava</option><option value="4">Opava</option> předpokládám že v tom mám nějakou chybu (to je jasné, jinak by to jelo), buď v xml které vracím (strom je v pořádku že by špatně navržene?) nebo v javascriptu který to má přegenerovat do html. Mohli byste mě nakopnout tím správným směrem, aby mi z výše popsaného xml generoval <option value="2">brno</option> ? krteczek |
||
peta Profil |
#2 · Zasláno: 21. 12. 2006, 11:01:10
krteczek
www.google.com a nasel bych si nejaky ajax chat Vetsinou v tech knizkach to byva dost pekelne napsano. "www.phpfreechat.net/" PHP+MySQL chat (JS Ajax) "www.plasticshore.com/projects/chat/" PHP+MySQL chat (JS Ajax) Ajaxove trideni v praxi maji na http://portal.mpsv.cz/sz/obcane/vmjedno/vmobor zmenis okres a zmeni se pocty inzeratu. Bohuzel, pak na to kliknes a maji tam nejakou chybu, tak uz neni oki. Jinak, jak predpokladas, chyba je pred tim alert, co nereaguje. JS konzola mi hlasi: Chyba: xmlHttp.responseXML.getElementByTagName is not a function Zdrojový soubor: http://aj.jaknato.com/ajax.js Řádek: 68 function aktualizujSeznamMest() var vysledky = xmlHttp.responseXML.getElementByTagName("mesto"); // tady melo byt asi ID ne? nebo by se to melo volat na document, ne? |
||
peta Profil |
#3 · Zasláno: 21. 12. 2006, 11:03:39
Jo, jestli chces, muzu ti udelat preklad od cestiny tve stranky (co mas odkaz pod formularem)
|
||
krteczek Profil |
#4 · Zasláno: 21. 12. 2006, 11:38:32
peta: To všechno vím, ale nevím jak z toho, proto se ptám ;-)
PS: Překlad těch stránek nepotřebuji, nejsou totiž moje ;-) |
||
krteczek Profil |
#5 · Zasláno: 21. 12. 2006, 11:44:19
Bože ja sem asi slepý....
xmlHttp.responseXML.getElementByTagName //to co jsem tam měl xmlHttp.responseXML.getElementsByTagName //správně:-) jedno zapomenuté s.....aaaaaaaaaaaaaaaaaaaa popojeli jsme :-) |
||
krteczek Profil |
#6 · Zasláno: 21. 12. 2006, 13:20:58
takže když upravím xml jen na jeden parametr u položky:
<mesta> <mesto>nazev1</mesto> <mesto>nazev2</mesto> </mesta> tak to začne fungovat, jenže já potřebuji předat do value id města. a to mi nejde. skoušel jsem přes: document.write('<option value="' + vysledky[i][0] + '">' + vysledky[i][1] + '</option>'); ale to nejelo
|
||
peta Profil |
#7 · Zasláno: 21. 12. 2006, 13:36:40
krteczek :)
"jenže já potřebuji předat do value id města. a to mi nejde" To je siroky pojem, nejde. Co ti na to rici. Ok, rekneme, ze mas vysledky. Co v tech vysledky mas? var i,x; x=""; for (i in vysledky) {x+=i+"="+vysledky[i]+" ";} alert(x); Treba tam dojde ke konverzi 0="" nebo tam nemas spravne hodnoty. (proto radeji pouzivam skryty iframe, kde si zobrazim zdroj a vidim, ale v podstate je to totez jako s tim alertem) |
||
peta Profil |
#8 · Zasláno: 21. 12. 2006, 13:50:23 · Upravil/a: peta
Jeste jinak.
FF - plugin Development tools - view generated source vidim toto: <label for="mesto">* Vyberte město: </label></td><td> <select name="mesto" id="mesto"><option> </option></select> cili pravdepodobne for(var i = 0; i < vysledky.length; i++) --> vysledky[0][0] neexistuje a hadal bych, ze mozna existuje --> vysledky[0]['mesto_id'] lze zjistit: for(var i = 0; i < vysledky.length; i++) { if (!Boolean(vysledky[i][0])) {alert("neexistuje vysledky["+i+"][0]")} } |
||
krteczek Profil |
#9 · Zasláno: 23. 12. 2006, 10:22:56
Takže jsem si s knížkou sedl na onu místnost a začetl jsem se... řešení jsem nalezl, už zpracovávám požadovaný xml tak jak potřebuji.
Jenže jsem zjistil že po odeslání formuláře je prázdná proměnná $_POST['kraj'], přičemž i v zobrazeném generovaném html jsou položky value vyplněné. Napadá Vás kde mám chybu? (odkaz: http://aj.jaknato.com/ ) krteczek |
||
peta Profil |
#10 · Zasláno: 23. 12. 2006, 10:43:58
1. Vyberu si kraj
2. Vyberu si mesto a JS konzola: Chyba: getElelementById is not defined Zdrojový soubor: http://aj.jaknato.com/ Řádek: 1 "getElementById" 3. Dam Odeslat a kraj tam skutecne zadny neni Ok, takze jinak. 1 , 2, zobrazit generovany kod <select name="kraj" id="kraj" onchange="obnovSeznamMest();return;"> <option value="">Vyberte prosím kraj</option> <option value="1">Pražský</option> <option value="2">Brněnský</option> <option value="3">Olomoucký</option> <option value="4">Ostravský</option> <option value="5">Královehradecký</option> </select> <select name="mesto" id="mesto" onchange="alert('-' + getElelementById('kraj'));"><option value="0">Vyberte město</option><option value="6">Olomouc</option></select> ... Cili to je vsechno v poradku. ALE pozor, co to vidim? pred koncem formulare je: <input type="hidden" name="kraj" value=""><input name="ok" value="odeslat" type="submit"> Takze vysledek byl spravny, kraj se ma = "". Chybicka se vloudila :) |
||
peta Profil |
#11 · Zasláno: 23. 12. 2006, 10:48:48
Jeste by mne zajimalo, na vypsani toho pole mas nejakou funkci nebo print_r($pole) ? To je docela pekne, kdyz to ukazuje i typ promenne. Ja teda mam na formulari obvykle typ dat form/multipart, tak jsem zvedavej, co by to ukazovalo.
|
||
krteczek Profil |
#12 · Zasláno: 23. 12. 2006, 11:05:21
hehe... to mi nedošlo že tam je ten zapomenuty input... tim padem to dava smysl... (zustal tam po puvodni verzi s dvema strankama, vyberem kraje na predchozí stránce, a zapoměl jsem na to :-/ no vzhledem k tomu že to trvalo několik dnu tak už se ničemu nedivím :Đ
Dík, provozní slepota je hnusná... jo vypis je: echo var_dump($_POST);-) |
||
Časová prodleva: 17 let
|
Toto téma je uzamčeno. Odpověď nelze zaslat.
0