Я использую мультиселекторный вход select2.
Выбор заполняется Ajax.
$('#schedule_' + repeatersAdded + '_selectedProducts').select2({
ajax: {
url: ajaxurl, // AJAX URL is predefined in WordPress admin
dataType: 'json',
delay: 250, // delay in ms while typing when to perform a AJAX search
data: function (params) {
return {
q: params.term, // search query
action: 'Get_Products'
};
},
processResults: function( data ) {
var options = [];
if ( data ) {
// data is the array of arrays, and each of them contains ID and the Label of the option
$.each( data, function( index, text ) { // do not forget that "index" is just auto incremented value
options.push( { id: text[0], text: text[1] } );
});
}
return {
results: options
};
},
cache: true
},
minimumInputLength: 3,
placeholder: "Please select"
});
Это отлично работает. Я храню выбранные значения в моей БД.
Когда я хочу отобразить значения из БД для пользователя, я использую следующий код (args ['selected_products'] содержит информацию о моем элементе):
args['selected_products'].forEach(function ( item, index ) {
var newOption = new Option(item.text, item.id, true, true);
$("#schedule_" + repeatersAdded + "_selectedProducts").append(newOption).trigger('change');
selectedOptions.push(item.id);
});
Приведенный выше код следует документации здесь
Вход select2 отлично отображает параметры, но когда мне нужно получить доступ к значениям (чтобы снова сохранить в БД), он возвращает NULL.
Обычно он возвращает массив со всеми значениями параметров.
Почему он это делает?