Autor Zpráva
ReVolt
Profil
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
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
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
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 httpRequestem, 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

Vaše odpověď

Mohlo by se hodit

Neumíte-li správně určit příčinu chyby, vkládejte odkazy na živé ukázky.
Užíváte-li nějakou cizí knihovnu, ukažte odpovídajícím, kde jste ji vzali.

Užitečné odkazy:

Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0