jQuery Select2 не инициализируется после запроса Ajax

#javascript #jquery #arrays #ajax #jquery-select2

#javascript #jquery #массивы #ajax #jquery-select2

Вопрос:

Моя проблема в том, что у меня есть поле, которое динамически добавляется на мой сайт после нажатия кнопки. Но я не могу загрузить souce данных select2 из API, поскольку он, похоже, загружается до его завершения или что-то в этом роде. Я пытался использовать setTimeout() , .delay() , .done() в запросе Ajax, и ничего не происходит.

 var productos = [];

    $.ajax({
        url: '/api/facturacion/productos',
        method: 'get',
        success: function (data) {
            if(data) {
                for(var i=0; i<data.length; i  ) {
                    productos.push({
                        id: data[i].id,
                        text: data[i].descripcion
                    });
                }
            }
        }
    }).then(function() {
        $(`#nombre_${articuloId}`).select2({
            data: productos,
            language: 'es'
        });
    });
  

Можно вызвать массив productos, и данные отображаются правильно, если у вас есть какие-либо подсказки, я буду признателен. Что-то еще заключается в том, что если я вызываю ту же переменную productos извне запроса Ajax, она удаляет его индекс.

Комментарии:

1. Что вам console.log(productos); then(function() {.... дает inside?

2. это дает мне массив объекта.

3. Имеет ли он правильную структуру, например [{ id: 0, text: 'somevalue' }, { id:1, text:'somevalue'}] ?

4. Да, его формат JSON.