Erstellen des URL-String für Get-Request

  • Hallo zusammen,


    ich möchte Daten einer HTML-Form an den Server schicken...ich habe das zunächst ganz "klassisch" mit Submitt-Button und PHP realisiert...in etwa so...

    PHP
    <form class="chronjob" action="chronjobs.php" method="get" >
        <input type="submit" name="submitLoad" value="Load">                         
        <input type="text" name="name" id="name" required value="<?php echo($chronjobConfig1->name)?>">    
    </form>

    Allerdings stieß ich da auf ein Problem...als Abhilfe wurde mir empfohlen, die Aufgabenstellung mal mit AJAX anzugehen...das schaut grundsätzlich auch gar nicht mal so schlecht aus...allerdings stehe ich gerade vor einer Unwissenheit...


    Beim "klassischen" Weg wird der URL-String (z.B: chronjobs.php?submitLoad=value1&name=value2) quasi "automatisch" erstellt. Bei der Verwendung von AJAX muss der URL-String "programmatisch" erstellt werden (siehe myAjax.open(...) im Code-Listing).

    Bei einem einfachen Input-Element wie "Text" oder "datetime-local" habe ich das auch noch geschafft...aber bei den Input-Elementen "multiple select/option" und "checkbox" habe ich so meine Probleme...ich bekomme das einfach nicht hin...wie macht man das?


    Hier ist mein aktuelles (vereinfachtes) Codelisting...

  • Bevor jetzt wieder auf Libraries und Frameworks umgestiegen wird, sollten vielleicht erstmal die Grundlagen geklärt werden.

    aber bei den Input-Elementen "multiple select/option" und "checkbox" habe ich so meine Probleme

    Welche Probleme sind das? Das sagst Du nicht, weshalb ich erstmal davon ausgehe, dass es der Unwissenheit darüber geschuldet ist, wie bzw. wann diese speziellen Felder übermittelt werden. Das ist nicht schlimm, kann man ja lernen. Aber eine Library oder ein Framework ohne Grundlagenkenntnisse helfen da auch nur bedingt weiter.


    Zur Info, falls meine Vermutung richtig ist: Checkboxen bspw. werden nur übermittelt, wenn sie angehakt sind.

    Weiterhin liefert selectedOptions eine Collection und nicht, wie Du erwartest einen String. Diesen Fehler hätte man in der Konsole des Browsers sicher sehen können. Ich würde statt auf selectedOptions zu gehen lieber die Options direkt ansprechen, bspw.:


    HTML
    <select name="functions" multiple>
        <option value="add">Add</option>
        <option value="delete">Delete</option>
        <option value="edit">Edit</option>
    </select>
    JavaScript
    var selectedString = '';
    var selOpts = document.querySelectorAll( 'form[name="functions"] > option:selected' );
    
    for ( x=0; x<selOpts.length; x++ )
        selectedString += 'functions[]=' + selOpts[x].value;

    Ist ungetestet! Aber sollte klar machen, worum es geht. selectedString kannst Du dann an Dein GET anhängen.

  • Hallo,


    vielen lieben Dank für die Hilfe...mit folgendem Code habe ich das gewünschte erreicht.... :)

    JavaScript
    var selectedFunctions = '';
    var selOpts = document.querySelector('#functions').selectedOptions;        
    for ( x=0; x<selOpts.length; x++ )
        selectedFunctions += '&functions[]=' + selOpts[x].value;

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!