Werte mehrerer Selekt-Elemente mit JSON versenden
JavaScript (jQuery, JSON)
Es wird eine Lösung zum Thema jQuery UI MultiSelect Widget auf tutorials.de aufgezeigt.
Problemstellung
Es sollen die die Werte von mehreren Selekt-Elementen, in denen eine multiple Auswahl möglich ist, mittels der ajax-Methode aus dem jQuery-Framework versendet werden. Zudem findet das JSON-Script zum Serialisieren des Objektes Verwendung.
Lösung
Auf der Serverseite sollen die Selekt-Elemente getrennt bearbeitet werden. Aus diesem Grund werden die IDs der Selektgruppen als Schlüssel des Objekts verwendet.
- Einer Funktion werden in einem Array die IDs der Selektgruppen übergeben
- In der Funktion werden die Arrays der ID als Eigenschaft einem Objekt zugewiesen
- Das Objekt wird mit der Methode stringify in ein JSON-Objekt überführt
Beispiel
In beiden Selekt-Gruppen können jeweils zahlreiche Optionen markiert werden. Mit der Schaltfläche wird die Auswahl an den Server gesendet und der REQUEST-String unbearbeitet zurückgegeben.
Quellcode (HTML)
Grundlage ist nachfolgendes HTML-Dokument.
HTML:
<html> <head> <title>www.tutorials.de</title> <meta name="author" content="Quaese"> <meta http-equiv="content-type" content="text/html; charset=iso-8859-1"> <script src="jquery-1.4.2.min.js" type="text/javascript"></script> <script src="json2.js" type="text/javascript"></script> <script type="text/javascript"> <!-- function testIt(arrSel){ var objAll = {}; for(strKey in arrSel){ $.extend( objAll, (function(key, val){ var obj = {}; obj[key]=val; return obj; })(arrSel[strKey], $('#'+arrSel[strKey]).val()) ); } $.ajax({ url: 'myside.php', data: {'selectednumbers':JSON.stringify(objAll)}, type: 'POST', success: function(data) { alert(data); } }); } //--> </script> </head> <body> <button onclick="testIt(['example','example1']);">testIt</button> <select id="example" name="example" multiple="multiple"> <option value="1">Option 1</option> <option value="2">Option 2</option> <option value="3">Option 3</option> <option value="4">Option 4</option> <option value="5">Option 5</option> </select> <select id="example1" name="example" multiple="multiple"> <option value="1">Option 1</option> <option value="2">Option 2</option> <option value="3">Option 3</option> <option value="4">Option 4</option> <option value="5">Option 5</option> </select> </body> </html>
Quellcode (Serverseite, PHP)
Auf der Serverseite wird lediglich das übergebene REQUEST-Array ausgegeben.
PHP:
<?php var_dump($_REQUEST['selectednumbers']); ?>