2016-04-03 7 views
1

Ich verwende das select2-Multiple für das Suchfeld. Ich übergebe diese Daten mit JSON und speichere sie mit Ajax (JSON stringify).Select2 Mehrfaches Format, das an JSON übergeben werden soll.

Ich brauche nur 2 Variablen übergeben, das ist die ID (Primärschlüssel, angepasst) und die Auswahl selbst.

Ich konnte es in der Datenbank speichern, wenn nur 1 Wert ausgewählt ist.

Wenn mehrere Werte auswählen, in meinem console.log, ich sehe so etwas wie dieses

{21,23,25,26} 

, die die Auswahl selbst ist.

Wie kann ich es so zeigen zu bekommen,

Object0->{id:1, selection:21} 
Object1->{id:2, selection:23} 
Object2->{id:3, selection:25} 
Object3->{id:4, selection:26} 

Unten ist der Code ich verwende,

var nature = { 
    ubtBusinessInfo: businessId, // the primary key 
    ubtBusinessListing: nature.val() // here is selection 
}; 

Hier ist die Initialisierung des select2 ist,

nature 
    .select2({ 
     allowClear: true, 
     placeholder: "Filter as you type", 
     minimumInputLength: 3, 
     multiple: true, 
     ajax: { 
      url: 'home/umkei/info/nature', 
      dataType: 'json', 
      quietMillis: 250, 
      data: function (term, page) { 
       return { q: term }; 
      }, 
      results: function (data, page) { 
       return { results: data }; 
      }, 
      cache: true 
     } 
    }) 

Natur ist definiert von (Ich versuchte beides wie unten)

var nature = $('[name=nature_business]') OR var nature = $(#nature_business); 

Ich weiß, dass es etwas mit der Verwendung von nature.val() zu tun haben muss. Muss etwas wie Array gewesen sein, aber ich weiß nicht, wie man diese Daten als Schlüssel-> Wert-Paare unterscheidet/aufteilt.

Vielen Dank.

Antwort

1

Ich habe diese letzte Woche und dachte, ich würde meine Lösung teilen.

var nature=[]; 
var splitnature = nature_business.val().trim().split(','); 
var n; 

for(n=0; n<=splitnature.length-1;n++){ 
    nature.push({ 
    ubtBusinessListing: splitnature[n], 
    ubtBusinessInfo: businessId 
    }); 
}