Select menü létrehozása AJAX segítségével hiba
Sziasztok
Készítettem egy kis progit, ami a következő képen kellene működjön:
Adott egy form, amit php-val állítok össze adatbázisból:
1. Egy lenyíló listából kiválasztom az iskolát
2. Az előbb kiválasztott iskola azonosítójával létrejön egy oktató lista
3. Módosítás gomb hatására elküldöm az adatokat, és itt a baj, mert az oktato_id változó nincs benne a $_POST változóban
A kódok:Az AJAX kód:Ha iskola váltás nélkül elküldöm a formot, akkor minden érték ott van a $_POST-ba.
Miután kiválasztom az iskolát, az "oktato4" DIV tartalma átvált erre:Ha most küldöm el a formot, akkor már nincs oktato_id. Mi lehet a baj?
A segítségeket előre is köszönöm.
■ Készítettem egy kis progit, ami a következő képen kellene működjön:
Adott egy form, amit php-val állítok össze adatbázisból:
1. Egy lenyíló listából kiválasztom az iskolát
2. Az előbb kiválasztott iskola azonosítójával létrejön egy oktató lista
3. Módosítás gomb hatására elküldöm az adatokat, és itt a baj, mert az oktato_id változó nincs benne a $_POST változóban
A kódok:
<tr><form action="bizottsag.php" id="bizottsag_form1" name="bizottsag_form1" method="post">
<td>
<div class="form-group">
<select class="form-control" id="iskola_id" name="iskola_id" onChange="showOktatoSelect(this.value, 'oktato4', '4');">
<option value="0" selected>Válassz iskolát</option>
<option value="1">Alfa Autósiskola</option>
<option value="2">Áncsán</option>
</select>
</div>
</td>
<td>
<div class="form-group" id="oktato4">
<input type="text" class="form-control" id="oktato_nev" name="oktato_nev" value="Fehér László" readonly>
<input type="hidden" id="oktato_id" name="oktato_id" value="1">
</div>
</td>
<td>
<div class="form-group">
<span class="text-center"><button type="submit" class="btn btn-primary">Módosít</button></span>
</div>
</td>
</form></tr>
function showOktatoSelect(iskolaID, selectID, ID) {
if (window.XMLHttpRequest) {
// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp = new XMLHttpRequest();
} else {
// code for IE6, IE5
xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange = function() {
if (this.readyState == 4 && this.status == 200) {
document.getElementById(selectID).innerHTML = this.responseText;
}
};
xmlhttp.open("GET","oktato-select.php?id="+iskolaID+"&ssz="+ID,true);
xmlhttp.send();
}
Miután kiválasztom az iskolát, az "oktato4" DIV tartalma átvált erre:
<div class="form-group" id="oktato4">
<select class="form-control" id="oktato_id" name="oktato_id">
<option value="0" selected="">Válassz</option>
<option value="6">Oktató ancsán 1</option>
<option value="7">Oktató ancsán 2</option>
</select>
</div>
A segítségeket előre is köszönöm.
Tipp
így csak tippelni tudok:
valamilyen js kód az, ami matat a DOM-ban, ezért mire ki szeretnéd nyerni az oktato_id értékét, addigra nem az van bent, amire keresel.
Így html ránézésre: másképp kell kinyerni egy input értékét és megint másképp egy select.option tömbből a selected értékét.
Amennyi js-t megmutattál, abban pont nincs benne, hogyan szeded össze a 3 id-t, és valószínűleg ott a hiba.
Próbáld meg esetleg kinyerni az input.value-t, és ha ez nem sikerül, akkor keresd select.option.selected-ként. Mindenképp érdemes adatellenőrzést bele tenni (és dev környezetben logolni) ott, ahol keresgélsz a DOM-ban.
Természetesen ez nem helyettesítheti a szerver oldali ellenőrzést!
Megoldva
Megoldódott közben. A form a fentieknél jóval hosszabb, ide csak a lényeget másoltam be.
Tesztelés céljából korábban raktam bele hidden oktato_id mezőt semmi értékkel. És természetesen az volt később a kódban, így mindig semmi lett az értéke.
Ez van ha az ember fáradtan programozgat.