2016-07-29 14 views
1

Ich versuche, ein select2 Eingabefeld von einer PHP/MySQL-Abfrage mit Ajax zu füllen.Populate Select2 von JSON Ajax Antwort

Hier ist mein Code:

var groups_array = []; 

    $.getJSON('ajax_get_json.php?what=contact_groups', function (data) { 

     $.each(data, function (index) { 
      groups_array.push({ 
       id: data[index].value, 
       text: data[index].text 
      }); 
     }); 

    }); 

$("#contact_groups_select").val(groups_array); 

contact_groups_select ist die ID meines select2 Eingang.

Meine JSON Ajax Antwort sieht wie folgt aus:

[{"value":"12","text":"Brodheadsville"}] 

Mein select2 allerdings nicht ist bevölkern. Ich hoffe, ich habe genug Code zur Verfügung gestellt, um Hilfe zu bekommen. Vielen Dank.

Antwort

1

statt .val() verwenden, sollten Sie die select2 Methode

$('#contact_groups_select').select2({data: groups_array}); 
+0

Vielen Dank für die exzellente Spielbarkeit, aber das macht es auch nicht füllen. –

+0

haben Sie den Wert von 'groups_array' protokolliert, um sicherzustellen, dass er gültig ist? – stackoverfloweth

+0

$ ('# contact_groups_select'). Val (12) füllt eine der Optionen. Deshalb habe ich .val benutzt. –

0

Das Problem werden ist, dass groups_array nicht bis der Rückruf von getJSON() Methode, die asynchron aufgefüllt wird.

Also, sollten Sie Ihren Code innerhalb der Callback-Funktion setzen:

var groups_array = []; 

$.getJSON('ajax_get_json.php?what=contact_groups', function (data) { 
    $.each(data, function (index) { 
     groups_array.push({ 
      id: data[index].value, 
      text: data[index].text 
     }); 
    }); 
    // Call val() or select2() method here 
    $("#contact_groups_select").val(groups_array); 
}); 
+0

zu aktualisieren Danke allen. Ich glaube, du hast recht, Chitrang, aber dieser Code funktioniert nicht, um zu bevölkern. Ich denke, ich muss das Array ansprechen. Wenn ich console.log des Arrays mache, wird nichts protokolliert. Wenn ich versuche, innerhalb der .each-Funktion zu alarmieren (Daten [index] .value), wird jede ID in Alarmfeldern angezeigt. –

+0

Lassen Sie mich umformulieren ... wenn ich Ihren Code benutze und das Array innerhalb von getJSON protokolliere, wird das Array angezeigt! –

+0

Also aus irgendeinem Grund sollte Ihr Code arbeiten, Chitrang. –