tutorials.de Buch-Aktion 05/2012
ERLEDIGT
JA
ANTWORTEN
7
ZUGRIFFE
602
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Kryptaesthesie Kryptaesthesie ist offline Mitglied Gold
    Registriert seit
    Feb 2005
    Ort
    127.0.0.1
    Beiträge
    189
    Hallo.
    Ich nutze JQuery zum Laden eines Teilbereichs der Seite:
    Code :
    1
    2
    3
    4
    5
    
            /* Daten abrufen */
            $.post(loadResource,
                         { tableID: "admin_reporting", comboauswahl: comboboxingSelected, site: seite },
                             function(data) { verarbeiteGeladeneDaten(data); },
                           "html");
    So weit so gut, das klappt wunderprächtig.
    Jetzt möchte ich aber noch ein Formular verarbeiten. Spricht alle Formularelemente (Key) und deren Werte (Value) als Parameter übergeben, also an 'site: seite' anhängen.
    Ich habe mir schon mal eine Methode geschrieben, die mir die Form-Elemente entsprechen raussucht:
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    
        function getAlleSelectorFeldwerte()
        {
            var all = "";
            $('#admin_reportingSelector :input').each(function(i){
               if(i > 0) all = all + ", ";
               all = all + this.name + ": '" + this.value + "'";
             });
            //alert(all);
            return all;
        }
    Ausgabe: feld1: katze, feld2: hund

    Meine Frage nun, wie muss ich getAlleSelectorFeldwerte() abändern, dass ich es mit als Parameter abschicken kann?

    Im IRC sagte man mir:
    serializeArray and use a json stringify (json2.js) to turn the obj into a string to send
    Aber leider weiß ich da nicht weiter.


    Danke euch schon mal für eure Hilfe!
    Gruß
    Gerrit
     

  2. #2
    Avatar von Sven Mintel
    Sven Mintel Sven Mintel ist offline Mitglied
    Registriert seit
    Aug 2003
    Beiträge
    18.238
    Blog-Einträge
    6
    Moin Gerrit,

    so könnte es bspw. laufen:

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    
    $.post(loadResource,
            [B]$.extend(
                      { tableID: "admin_reporting", comboauswahl: comboboxingSelected, site: seite},
                        getAlleSelectorFeldwerte()
                    )[/B],
            function(data){ verarbeiteGeladeneDaten(data);},
            "html");
                           
                           
     function getAlleSelectorFeldwerte()
        {
            var all = new Object();
            $('#admin_reportingSelector :input').each(function(i){
               all[this.name]=this.value;
             });
           return(all);
        }

    getAlleSelectorFeldwerte() gibt die Daten als Objekt zurück.

    Deine "Standarddaten":
    Code :
    1
    
    { tableID: "admin_reporting", comboauswahl: comboboxingSelected, site: seite}
    werden per $.extend() mit diesem Objekt zusammengeführt, Ergebnis ist ein einziges Objekt, welches als Argument verwendet wird.
    Fertsch
     

  3. #3
    Kryptaesthesie Kryptaesthesie ist offline Mitglied Gold
    Registriert seit
    Feb 2005
    Ort
    127.0.0.1
    Beiträge
    189
    Guten Morgen.
    Ich komme leider noch nicht zum Ziel.
    Ich habe die Funktion getAlleSelectorFeldwerte() jetzt abgeändert in:
    Code :
    1
    2
    3
    4
    
        function getAlleSelectorFeldwerte()
        {
            return $('#admin_reportingSelector :input').serializeArray();
        }
    Es wird kein Fehler geschmissen, aber die Feldinhalte kommen nicht auf der per Ajax angesprochenen Seite an.
    Das Parameter-Objekt baue ich so auf:
    Code :
    1
    
    paras = $.extend( { tableID: "admin_reporting", comboauswahl: comboboxingSelected, site: seite}, getAlleSelectorFeldwerte() );
    Der Aufruf sieht dann so aus:
    Code :
    1
    2
    3
    4
    
    $.post(loadResource,
                         paras,
                         function(data) { verarbeiteGeladeneDaten(data); },
                         "html");
    Hast du noch eine Idee?
    Danke schon mal für deine Hilfe!
    Gruß
    Gerrit
     

  4. #4
    Avatar von Sven Mintel
    Sven Mintel Sven Mintel ist offline Mitglied
    Registriert seit
    Aug 2003
    Beiträge
    18.238
    Blog-Einträge
    6
    Zitat Zitat von Kryptaesthesie Beitrag anzeigen
    Hast du noch eine Idee?
    Naja, die Idee steht in meinem vorrangegangenen Posting.

    Das Problem bei deinem Versuch ist, dass serializeArray() einen String liefert, $.extend() jedoch 2 Objekte kombiniert.
     

  5. #5
    Kryptaesthesie Kryptaesthesie ist offline Mitglied Gold
    Registriert seit
    Feb 2005
    Ort
    127.0.0.1
    Beiträge
    189
    Zitat Zitat von Sven Mintel Beitrag anzeigen
    Naja, die Idee steht in meinem vorrangegangenen Posting.

    Das Problem bei deinem Versuch ist, dass serializeArray() einen String liefert, $.extend() jedoch 2 Objekte kombiniert.
    Oh, das war mein Fehler, hatte was übersehen.
    Es funktioniert! Wunderprächtig!

    Vielen Dank!!
     

  6. #6
    Kryptaesthesie Kryptaesthesie ist offline Mitglied Gold
    Registriert seit
    Feb 2005
    Ort
    127.0.0.1
    Beiträge
    189
    Hallo noch einmal.
    Ich greife diesen Thread noch einmal auf.

    Code :
    1
    
    $('#xyzSelector :input').each(function(i){
    gibt mir ja alle input-Felder des Formulars. Dabei sind auch Radiobuttons. Wie erweitere ich diesesn Selector, dass alle Felder und von den Radios nur die aktiven in der each-Schleife auftauchen?


    Schönen Dank schon mal!
    Gruß
    Gerrit
     

  7. #7
    Avatar von Sven Mintel
    Sven Mintel Sven Mintel ist offline Mitglied
    Registriert seit
    Aug 2003
    Beiträge
    18.238
    Blog-Einträge
    6
    Es gibt zwar diverse Attributselektoren in JQuery, aber nur die Möglichkeit, mehrere per AND zu verknüpfen...für dein Anliegen bräuchte man aber ein OR, um sowohl nicht-Radios als auch gecheckte Radios zu erfassen.

    Du kannst das aber in der Funktion erledigen, ersetze jenes:
    Code :
    1
    
    all[this.name]=this.value;
    ...hierdurch:
    Code :
    1
    
    if(this.type!='radio' || this.checked)all[this.name]=this.value;
    (ungetestet )
     

  8. #8
    Kryptaesthesie Kryptaesthesie ist offline Mitglied Gold
    Registriert seit
    Feb 2005
    Ort
    127.0.0.1
    Beiträge
    189
    Guten Morgen

    Zitat Zitat von Sven Mintel Beitrag anzeigen
    Es gibt zwar diverse Attributselektoren in JQuery, aber nur die Möglichkeit, mehrere per AND zu verknüpfen...für dein Anliegen bräuchte man aber ein OR, um sowohl nicht-Radios als auch gecheckte Radios zu erfassen.
    Das hatte ich mir schon gedacht, aber ich dachte mir, ich frag' lieber noch mal nach!


    Zitat Zitat von Sven Mintel Beitrag anzeigen
    Du kannst das aber in der Funktion erledigen, ersetze jenes:
    Code :
    1
    
    all[this.name]=this.value;
    ...hierdurch:
    Code :
    1
    
    if(this.type!='radio' || this.checked)all[this.name]=this.value;
    (ungetestet )
    Eine derartige Lösung schwirrte mir auch im Kopf umher
    Danke für deine Hilfe!

    Gruß
    Gerrit
     

Ähnliche Themen

  1. Antworten: 0
    Letzter Beitrag: 15.12.10, 10:22
  2. Javascript-Aufruf eines "Slimbox 2"-Links funktioniert nicht
    Von Warper im Forum Javascript & Ajax
    Antworten: 2
    Letzter Beitrag: 09.05.09, 01:25
  3. Design wird beim ersten Aufruf "zerrissen"
    Von metno im Forum HTML & XHTML
    Antworten: 2
    Letzter Beitrag: 02.04.08, 20:17
  4. Antworten: 1
    Letzter Beitrag: 10.09.07, 23:14
  5. Antworten: 2
    Letzter Beitrag: 14.02.05, 00:00