2016-07-29 197 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。 –