Autor | Zpráva | ||
---|---|---|---|
ReVolt Profil |
#1 · Zasláno: 25. 8. 2012, 15:48:09
Nazdar, mám menší problém s ajaxem,
potřebuji zavolat 2 ajaxové fce, které mění obsah, 1 mi změní tabulku a druhá iput select, volání vypadá následovně: <select name="kat" onchange="zmenPodkat(this.value); vypisClanky();"> něco už jsem v ajaxu napsal a vždy to fungovalo, jen teď se vždy provede jen jedna fce. hledal jsem na internetu ale nenašel jsem nic co by mi pomohlo to vyřešit díky moc |
||
Chamurappi Profil |
#2 · Zasláno: 25. 8. 2012, 15:52:23
Reaguji na ReVolta:
Buď máš v té první funkci chybu, čímž se ukončí zpracování (viz konzole), nebo ve vypisClanky zkoušíš pracovat s dynamicky dotaženým obsahem a zapomněl jsi na asynchronnost AJAXu (odpověď dorazí až po skončení běhu onchange ).
Pokud jsem se netrefil, prosím o odkaz na živou ukázku. |
||
ReVolt Profil |
#3 · Zasláno: 25. 8. 2012, 16:15:37
funkce vypadají následovně:
function zmenPodkat(kat) { var parametry = "id_kategorie="+kat; newHttpRequest(); httpRequest.open("POST", "ajax.php?action=uprav_select_podkat", true); httpRequest.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded'); httpRequest.onreadystatechange= function() {zpracujZmenPodkat();}; httpRequest.send(parametry); } function zpracujZmenPodkat() { if (httpRequest.readyState == 4) { if(httpRequest.status == 200) { document.getElementById("select_podkat").innerHTML = httpRequest.responseText; } else { alert("Chyba: "+ httpRequest.status); } } } function vypisClanky() { var razeni = document.forms.filtr_clanky.razeni.value; var kategorie = document.forms.filtr_clanky.kategorie.value; var podkategorie = document.forms.filtr_clanky.podkategorie.value; var parametry = "razeni="+razeni+"&kat="+kategorie+"&podkat="+podkategorie; newHttpRequest(); httpRequest.open("POST", "ajax.php?action=filtr_clanku", true); httpRequest.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded'); httpRequest.onreadystatechange= function() {zpracujVypisClanky();}; httpRequest.send(parametry); } function zpracujVypisClanky() { if (httpRequest.readyState == 4) { if(httpRequest.status == 200) { document.getElementById("zobraz_clanky").innerHTML = httpRequest.responseText; } else { alert("Chyba: "+ httpRequest.status); } } } chybu tam nikde nevidím, co myslíš tím "dynamicky dotaženým obsahem"? živou ukázku nemám a kdybych to někam nahrál tak bych to musel i naplnit, aby to mělo cenu |
||
Chamurappi Profil |
#4 · Zasláno: 25. 8. 2012, 16:25:43
Reaguji na ReVolta:
AJAX je asynchronní (odpovědi přicházejí později) a ty zjevně používáš jen jednu globální společnou proměnnou httpRequest . Nevím, co přesně se stane s tím prvním httpRequest em, který zahodíš, ale nepřekvapuje mě, že to nechodí.
Proč vůbec posíláš najednou dva HTTP požadavky? Není to zbytečné? |
||
ReVolt Profil |
Chamurappi:
jakože bych to zavolal jen v jedné fci? nejsem v ajaxu moc zběhlý ale zatím mi vše fungovalo EDIT tak sem to upravil, abych tam neměl jen jednu globální proměnnou, skripty jsme kompletně přepracoval a funguje to! díky moc |
||
Časová prodleva: 13 let
|
0