Mit Ajax gefüllten Select auslesen

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Mit Ajax gefüllten Select auslesen

    Hallo,
    sorry das mein erster Post gleich eine Frage ist aber ich komm einfach nicht weiter.

    Ich hab ein Formular mit einer festen Select Box und einer die per Ajax-Php gefüllt wird.
    Funktioniert auch alles wunderbar.
    Allerdings beim Absenden des Formulars wird der Inhalt der Select nur bei IE übergeben, fülle ich das Formular mit FF kommt einfach nichts an.

    Also die Select Box hat einen eindeutigen namen und wird in ein <td> Tag per id eingefüllt. Wie gesagt funktioniert alles nur eben wenn ich auf der nächsten Seite per $_REQUEST['selectbox'] den Inhalt auslesen will, geht das nur beim IE.
    $_POST hab ich auch probiert das selbe.

    Weiss jetzt nicht ob Ihr Code braucht aber vielleicht ist ja einfach ein Fehler in meiner Logik.

    Thx & Gruß
    Henning
  • hallo und willkommen bei easy-coding,

    also du füllst ein (leeres) <td> tag mit einem <select> tag und sendest dann das formular ab
    sollte eigentlich kein problem sein.

    ist denn wirklich alles innerhalb eines <form> tags?
    (wäre zwar dann komisch, dass es der IE macht, aber der lässt ja so einiges durchgehen)

    ansonsten poste mal bitte den code
  • Hi.

    also ich bin am verzweifeln.
    Hier ma ein wenig code genau an der stelle ist das problem.
    Ich weiss totaler müll aber so siehts nunmal aus nach einem ganzen Tag fehler suche.

    Nicht Funktionierend!

    Quellcode

    1. <table cellpadding="0" cellspacing="0" border="0" width="90%">
    2. <tr><td colspan="4" align="left" class="Ueberschrift1"><b></b></td></tr>
    3. <tr><td colspan="4">&nbsp;</td></tr>
    4. <form action="design_editsave.php" method="post" enctype="application/x-www-form-urlencoded" name="form" id="form">
    5. <select name="stcountry" onChange="sndReq()" style="width:155px">
    6. <option value="0" selected><?=$strSelect;?></option>
    7. <?
    8. $data=$db_connect->fetch("SELECT * FROM mcr_country");
    9. foreach($data as $res)
    10. {
    11. echo '<option value="'.$res['country_id'].'">'.$res['country_name'].'</option>';
    12. }
    13. ?>
    14. </select>
    15. <span id="hs"> </span>
    16. <input type="submit" name="submit" value="<?=$strSave2?>">
    17. <input type="reset" name="submit" value="<?=$strCancel2?>" onclick="javascript:window.history.back()">
    18. </form>
    Alles anzeigen



    Funktionierend!

    Quellcode

    1. <form action="design_editsave.php" method="post" enctype="application/x-www-form-urlencoded" name="form" id="form">
    2. <select name="stcountry" onChange="sndReq()" style="width:155px">
    3. <option value="0" selected><?=$strSelect;?></option>
    4. <?
    5. $data=$db_connect->fetch("SELECT * FROM mcr_country");
    6. foreach($data as $res)
    7. {
    8. echo '<option value="'.$res['country_id'].'">'.$res['country_name'].'</option>';
    9. }
    10. ?>
    11. </select>
    12. <span id="hs"> </span>
    13. <input type="submit" name="submit" value="<?=$strSave2?>">
    14. <input type="reset" name="submit" value="<?=$strCancel2?>" onclick="javascript:window.history.back()">
    15. </form>
    Alles anzeigen


    Was ist an der Tabelle so schlimm, oder muss alles genau stimmen also im <td> und so, damit es geht? :?

    Ps. Ist natürlich nur ein Teil code und wie gesagt im IE gehts, im FF nicht.

    Gruß
    Henning
  • Hi, danke erstmal für die Antworten.
    Ja aber kann es dadran liegen?
    Das ich dadrüber eine sagen wir so wie sie da ist kapute tabelle hab?
    Das Form sollte doch trotzdem gehen

    Javascript ist die hier
    Die den inhalt liefert ist egal, also so seh ich es weil sag wir steht drin <select name="design_startposition" id="design_startposition" style="width:155px"><option ...></option></select> sowas in der Art gibt sie halt aus nur eben ausser DB gefüllt.
    Ist zu gross das ich sie ma eben umschreibe ;)

    Quellcode

    1. var resObjekt = null;
    2. function erzXMLHttpRequestObject(){
    3. var resObjekt = null;
    4. try {
    5. resObjekt = new ActiveXObject("Microsoft.XMLHTTP");
    6. }
    7. catch(Error){
    8. try {
    9. resObjekt = new ActiveXObject("MSXML2.XMLHTTP");
    10. }
    11. catch(Error){
    12. try {
    13. resObjekt = new XMLHttpRequest();
    14. }
    15. catch(Error){
    16. alert("Erzeugung des XMLHttpRequest-Objekts ist nicht möglich");
    17. }
    18. }
    19. }
    20. return resObjekt;
    21. }
    22. function ErzeugeAJAXObjekt(){
    23. this.erzXMLHttpRequestObject = erzXMLHttpRequestObject;
    24. }
    25. function sndReq2(klick) {
    26. resObjekt.open('get', 'laender.php?wo='+klick,true);
    27. resObjekt.onreadystatechange = handleResponse;
    28. resObjekt.send(null);
    29. }
    30. function sndReq() {
    31. var anz=this.document.form.stcountry.options.length;
    32. for(i=1;i<=anz;i++){
    33. if(this.document.form.stcountry.options[i-1].selected){
    34. var value = this.document.form.stcountry.options[this.document.form.stcountry.selectedIndex].value;
    35. resObjekt.open('get', 'laender.php?wo='+value,true);
    36. resObjekt.onreadystatechange = handleResponse;
    37. resObjekt.send(null);
    38. break;
    39. }
    40. }
    41. }
    42. function handleResponse() {
    43. if((resObjekt.readyState == 4) && (resObjekt.status == 200)){
    44. document.getElementById("hs").innerHTML = resObjekt.responseText;
    45. }
    46. }
    47. //resObjekt=erzXMLHttpRequestObject();
    48. o = new ErzeugeAJAXObjekt();
    49. resObjekt=o.erzXMLHttpRequestObject();
    Alles anzeigen


    Diese Ajax Datei hab ich aus dem Buch "Ajax mit Php".

    Ich mein wenn du sagst jetzt sagst das es dran liegen kann, das z.B. der <form> Tag nicht richtig in einem <table><tr><td><form...></td></tr></table> drin ist dann Probier ich das mal aus aber nach einem ganzen Tag Fehler suche, hab ich ehrlich gesagt kaum noch lust. Bin ich echt schon am überlegen das wieder auf die altmodische Art zu machen, einfach alles mitgeben und nicht nachladen.

    Gruß
    Henning

    Gruß
    Henning
  • Öhm peinliche Frage, mir ist es noch nie aufgefallen, aber schreibt man die <form></form> immer ausserhalb der Tabelle?
    :oops:

    Nun gehts...

    Also ich hab die bisher immer in einem <td> drin gehabt, und ich schreib schon eine ganze Zeit websites.

    Naja man lernt immer was dazu :D

    Grossen Dank da währ ich warscheinlich nicht drauf gekommen das zu testen.
    Die ganze Ajax geschichte find ich wirklich Interessant. War mein erster Versuch und naja startschwierigkeiten gibs ja überall.

    Gruß &Thx
    Henning
  • also eine komplette form darf innerhalb eines <td>'s stehen

    de.selfhtml.org/html/referenz/elemente.htm#form
    Darf innerhalb der folgenden HTML-Elemente vorkommen:
    applet | blockquote | body | button | center | dd | del | div | fieldset | iframe | ins | li | map | noframes | noscript | object | td | th


    aber damit es echtes XML ist, muss das <form> dann auch innerhalb der <td> wieder geschlossen werden
    am besten du prüfst immer mit dem validator.w3.org

    zwischen <tr>'s darf nichts hin außer <td>'s
  • Hi,
    das heist so währe okay?

    Quellcode

    1. <table>
    2. <tr>
    3. <td>
    4. <form
    5. <select>
    6. </select>
    7. <input>
    8. </form>
    9. </td>
    10. </tr>
    11. </table>
    Alles anzeigen


    Und so?

    Quellcode

    1. <table>
    2. <tr>
    3. <td>
    4. <form
    5. <select>
    6. </select>
    7. </td>
    8. </tr>
    9. <tr>
    10. <td>
    11. <input>
    12. </form>
    13. </td>
    14. </tr>
    15. </table>
    Alles anzeigen


    Dann muss ich mir wohl doch mal n Buch bestellen über XML+CSS, kann man ja auch eine art Tabellen Design mit machen wie ich gelesen hab oder?

    Gruß
    Henning
  • das 2te ist falsch...

    korrekt: <b><a></a></b>
    falsch: <b><a></b></a>

    ich weiß nicht ob sich da ein buch wirklich lohnt..
    barrierefreies webdesign mit XHTML ist schon extrem wichtig..
    aber wenn du viel mit websites zu tun hast, dann musst du dir nur angewöhnen die fertigen sites mit dem o.g. Validator zu checken

    aus fehlern lernt man doch am besten