【问题标题】:Populate Select2 from JSON Ajax Response从 JSON Ajax 响应填充 Select2
【发布时间】:2016-12-04 07:39:25
【问题描述】:

我正在尝试使用 ajax 从 php/mysql 查询中填充 select2 输入框。

这是我的代码:

 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 是我的 select2 输入的 ID。

我的 JSON ajax 响应如下所示:

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

我的 select2 没有填充。我希望我提供了足够的代码来获得帮助。谢谢。

【问题讨论】:

    标签: jquery json ajax jquery-select2


    【解决方案1】:

    您应该使用 select2 方法,而不是使用.val()

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

    【讨论】:

    • 感谢您的回复,但也没有填写。
    • 您是否记录了groups_array 的值以确保其有效?
    • $('#contact_groups_select').val(12) 确实填充了其中一个选项。这就是我使用 .val 的原因。
    • 嗯.....我刚刚做了console.log(groups_array);在 .getJSON 之后,里面没有数据!
    • 我仍然认为select2 是正确的使用方法,他们很可能会在幕后调用.val,但我们不知道他们可能会做什么来更新对象/数据
    【解决方案2】:

    问题是 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);
    });
    

    【讨论】:

    • 谢谢大家。我认为您是对的,Chitrang,但是该代码也无法填充。我想我需要解决数组。如果我对数组执行 console.log ,则没有任何记录。如果我尝试在 .each 函数中使用 alert(data[index].value),每个 id 都会显示在警报框中。
    • 让我改述一下...如果我使用您的代码并在 getJSON 中记录数组,则数组正在显示!
    猜你喜欢
    • 2015-07-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-03
    • 2015-06-27
    • 2016-03-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多