select2 ajax 执行了2次

Select2 ajax is executed 2 times

我有一个脚本可以从后端获取一些数据并填充 select2 下拉列表。问题是 ajax 调用总是被调用 2 次,它不应该是这样的。我不确定我做错了什么......任何帮助都会受到赞赏。

这是我的代码:

var select2Element = $('select').select2({
    theme: "classic",
    escapeMarkup: function (markup) { return markup; },
});

select2Element.on('select2:opening', function(event) {
    var clicked = $(this);

    var route = "{{ path('get_attribute_list', {'articleId': 'ARTICLEID', 'attributeGroupId': 'ATTRIBUTEGROUPID'}) }}"
    var url = route.replace("ARTICLEID", $(this).attr('data-articleId')).replace('ATTRIBUTEGROUPID', $(this).attr("data-attributeGroupId"));

    $.ajax ({
        url: url,
        dataType: 'json',
        async: false,
        type: "GET",
    }).then(function (data) {

        //@TODO get out elements already inserted

        for (var d = 0; d < data.length; d++)
        {
            var item = data[d];

            // Create the DOM option that is pre-selected by default
            var option = new Option(item.text, item.id, true, true);

            // Append it to the select
            clicked.append(option);
        }
        // Update the selected options that are displayed
        clicked.trigger('change');
    });

});

var inputResult = [];
select2Element.on('select2:select', function(e) {
    var jsonValue = {
        "articleId": $(this).attr("data-articleId"),
        "attributeGroupId": $(this).attr("data-attributeGroupId"),
        "attributeId": e.params.data.id
    }
    inputResult.push(jsonValue);

    $('#addAttributes').val(JSON.stringify(inputResult));
});

select2Element.on('select2:close', function() {
    $(this).html('');
});

'select2:open' 和 'select2:opening' 中似乎存在错误。有针对此问题的修复程序,但未发布。 无论如何,在解决此问题之前遇到此问题的人可以在此处查看更多详细信息:

https://github.com/select2/select2/issues/3503

并在此处解决此问题:

https://github.com/select2/select2/commit/c5a54ed70644598529a4071672cca4a22b148806