2016-07-29 166 views
1

我想從php/mysql查詢使用ajax填充select2輸入框。從JSON填充選擇2 Ajax響應

這裏是我的代碼:

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是我選擇2輸入的ID。

我的JSON Ajax響應看起來是這樣的:

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

我選擇2不填充不過。我希望我提供了足夠的代碼來獲得一些幫助。謝謝。

回答

1

,而不是使用.val()你應該使用選擇2方法

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

感謝效應初探,但這並不要麼填充它。 –

+0

你記錄了'groups_array'的值以確保它是有效的嗎? – stackoverfloweth

+0

$('#contact_groups_select').val(12)確實填充了其中一個選項。這就是我使用.val的原因。 –

0

的問題是,groups_array不填充到的getJSON回調()方法異步。

所以,你應該把你的代碼的回調函數內:

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

謝謝大家。我認爲你是對的,Chitrang,但是這個代碼不適合填充。我想我需要解決陣列問題。如果我做數組的console.log沒有記錄。如果我嘗試在.each函數中警告(data [index] .value),則每個ID都會顯示在警報框中。 –

+0

讓我改述一下......如果我使用你的代碼並在getJSON中記錄數組,數組就顯示了! –

+0

因此,出於某種原因,你的代碼應該工作,chitrang。 –