Загрузить значения в select2 multiselect

Я использую select2 вместо окна поиска.

Здесь я использую для загрузки значений стран, как это

$("#countries").select2({
    multiple: true,
    tags:["India", "Japan", "Australia","Singapore"],
    tokenSeparators: [","]
});

Когда я нажимаю кнопку «Сохранить», они правильно отправляются на сервер, теперь возникает вопрос, когда я хочу изменить поле страны после сохранения на сервере, как я могу загрузить сохраненные значения в поле страны.

Вот как я получаю данные с сервера

$.getJSON('/dataprovider?data=fetchCountriesForm', function(opts) {

    //the opts here contains the json values of the countries.

    //what code should be written here to load the values in $('#countries).select2();

    //user can add some more countries or can remove the previously added countries. 

}

person rkj    schedule 15.04.2013    source источник


Ответы (2)


Ознакомьтесь с документацией в разделе Loading Remote Data.

Вы найдете такие примеры, как:

$("#e6").select2({
    placeholder: "Search for a movie",
    minimumInputLength: 1,
    ajax: { 
           // instead of writing the function to execute the request we use Select2's convenient helper
          url: "http://api.rottentomatoes.com/api/public/v1.0/movies.json"
          // Other stuffs
          }
});

Также вы можете сделать так:

$.getJSON('/dataprovider?data=fetchCountriesForm', function(opts){
    $("#countries").select2({
        data: opts
    });
})

Ваши JSON данные должны быть в следующем формате:

[{id:0,text:'enhancement'},
 {id:1,text:'bug'},
 {id:2,text:'duplicate'},
 {id:3,text:'invalid'},
 {id:4,text:'wontfix'}
]
person Subedi Kishor    schedule 15.04.2013
comment
Я считаю, что данные, полученные из URL-адреса, загружаются в поле поиска в пользовательском событии. Подобно тому, как пользователь вводит ввод, затем значение извлекается, и он выбирает значение. Здесь я хочу загрузить все значения, полученные из json, без каких-либо пользовательских событий. @Кишор Субеди - person rkj; 15.04.2013
comment
Спасибо @Kishor за помощь, но я нашел более простой способ сделать это, я просто использовал функцию триггера для загрузки значений. - person rkj; 15.04.2013

Я просто использую эту ссылку http://ivaynberg.github.io/select2/#event_ext_change и используйте функцию триггера для загрузки значений

$.getJSON('/dataprovider?data=fetchCountriesForm', function(opts) {
        parent.parent.parent.showLoader();
        if (opts) {
            $("#countries").val(opts).trigger("change");
        } 

Этот трюк загружает значение в поле выбора.

person rkj    schedule 15.04.2013
comment
Я знаю, что это старо, так что простите меня, но, похоже, это не работает с двумерным массивом? Я могу загружать такие значения, как («собака», «кошка», «мышь»), но не («1»: «Собака», «2»: «Кот», «3»: «Мышь»). Вы смогли это сделать? - person SBB; 05.06.2014