ugrás a tartalomhoz

AJAX hívás után select értéke nincs a POST-ban

MrNemo · 2018. Okt. 26. (P), 19.26
Sziasztok
A problémám továbbra is fennáll mégiscsak.
Egy form-on belül van 1 SELECT menü és két először DISABLED SELECT.
Első SELECT vátozás hatására meghívódik a lenti AJAX kód:
  $( "#iskola_id" ).on("change", function() {
    var valasztott_id = $(this).val();
    $.ajax({
      method: "post",
      url: "select_oktato.php",
      data: { id: valasztott_id  },
    })
    .done(function( data ) {
      $("#oktato_elso").html( data );
    })
  });
  $( "#iskola_id" ).on("change", function() {
    var valasztott_id = $(this).val();
    $.ajax({
      method: "post",
      url: "select_rendszam.php",
      data: { id: valasztott_id  },
    })
    .done(function( data ) {
      $("#rendszam_elso").html( data );
    })
  });
A div tartalma AJAX előtt:
<div id="oktato_elso">
<select class="form-control" id="oktato_id" disabled>
<option>Válassz iskolát</option>
</select>
</div>
Ajax hívás után:
<div id="oktato_elso">
<select class="form-control" id="oktato_id" name="oktato_id">
<option value="0" selected="selected">Válassz oktatót</option><option value="50">Ősz Ferenc</option>
</select>
</div>
És amint az látható a két eredetileg DISABLED div (#oktato_elso és #rendszam_elso) tartalma átvált egy-egy választható SELECT menüre. Ezekben is kiválasztom a megfelelő oktatót és rendszámot, majd nyomok a küldés gombra.
Az #iskola_id SELECT értéke ott van a POST-ban de az oktato és rendszam nem létezik.
Annyit még hozzáteszek, hogy 10 iskola SELECT van az oldalon, de mindnek egyedi az azonosítója, és mind egy-egy form
Mi lehet a baj?
 
1

Olyan létezik, hogyha két

inf · 2018. Okt. 27. (Szo), 07.27
Olyan létezik, hogyha két input van azonos néven, akkor a szerver eldobja az egyik értékét, de itt ahogy nézem nem ez a helyzet.

Ez tényleg alap debug így, végig kell menni minden lépésen. Ahogy nézem megjön a HTML rendben a szerverről, legalábbis azt írod, hogy kicserélte. Meg kell nézni, hogy egyáltalán bent van e a div a form-ban. Ha bent van, és mégsem megy el, akkor meg kell nézni, hogy pontosan milyen post data megy el. Ha ott van a post data-ban, akkor szerver oldali hiba. Ha nincs ott, akkor bugos a böngésző, és érdemes megnézni másik böngészőben is. Ez utóbbit kétlem, legalábbis annyira alap dologról van szó, hogy már rég javítva lett volna, ha van ilyen hiba.
2

A div benne van a

MrNemo · 2018. Okt. 27. (Szo), 11.36
A div benne van a formban.
Sőtt, ha ajax hívás előtt a div tartalmát átírom erre:
<div id="oktato_elso">  
<select class="form-control" id="oktato_id" name="oktato_id">  
<option value="0" selected>Válassz iskolát</option>  
</select>  
</div>  
És ajax hívás nélkül nyomok a küldés gombra, akkor a POST-ban ott van az oktato_id 0 értékkel.
De miután választok iskolát és az ajax kitölti a divet, utánna mindegy mit választok ki az oktatók közül, a POST-ban nem hogy az értéke, de maga oktato_id változó sem jelenik meg. Olyan mintha ez a select menü nem is lett volna a html-ben.
4

Biztos, hogy nem attól függ,

inf · 2018. Okt. 28. (V), 17.17
Biztos, hogy nem attól függ, hogy ajaxot használsz. Valami más logikai hiba van az ajaxos kódban.
3

Kétszer ugyanaz az event

Pepita · 2018. Okt. 28. (V), 14.58
Kétszer van a js-ben ugyanannak az elemnek (#iskola_id) a change eseménye kezelve.
Alaphelyzetben ez azt jelenti - mivel nincs tiltva a további eseménykezelés -, hogy mindkettő lefut változtatáskor.

Mindkét esetben a valasztott_id értéke a #iskola_id értékét kapja.
Ezt posztolod be két külön URL-re: select_oktato.php és select_rendszam.php.

Biztos, hogy ez a cél?

A másik, hogy ajax post előtt sehol sem kérdezed le az oktato_id nevű select értékét. Akkor mitől szeretnéd, hogy bekerüljön a post adatok közé?
Mindkét eseménykezelő az #iskola_id értékét kérdezi le, mivel a $(this).val(); annak az értékét fogja visszaadni, amelyik elem kiváltotta az eseményt.

Tippre a két $( "#iskola_id" ).on("change" ... közül az egyik #oktato_id szeretne lenni...

Megjegyzem, hogy ha 10 oktato_id id van egy oldalon, akkor nem fog helyesen működni, nem elég, ha a konténer div-nek van egyedi id-ja.
Mellesleg nem túl célszerű id attribútumnak olyan név, ami tartalmazza szintén, hogy "id".

(Azt nem értem, hogy ehhez miért kell több fórumtéma egyszerre.)
5

Kevés az információ

Hidvégi Gábor · 2018. Okt. 30. (K), 08.48
A Küldés gomb ajax hívást kezdeményez, vagy pedig hagyományos HTML űrlapküldést? Van rajta javascript eseménykezelő?