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.