Select2使用ajax加载设置选定的值

时间:2014-03-26 10:05:17

标签: jquery ajax

当页面加载时,我将一些数据加载到选择框中,并使用ajax请求返回之前选择的json字段。

如何通过ajax请求实现select2设置某些项目?

我的json只返回一个id和文本。

我的ajax请求,但还没有任何功能:

// Get permissions
$.ajax({
    type: "Get",
    url: "/Files/GetFolderPermissions",
    data: { folderId: folderId }
}).success(function (data) {
    // Do stuff
    //$('#EditFolder #FolderActionModel_ValueRole')
}).error(function () {
    alert('Ajax call is mislukt, kon de rollen niet ophalen');
}).always(function () {
    hideLoadingScreen();
});

3 个答案:

答案 0 :(得分:2)

以下是我为你做的一些例子 这取决于你的select2格式

$("#yourSelect2Selector").select2({
        id: function(e) {return e.name;},
        placeholder: "Place holder is here",
        allowClear: true,
        width: 'resolve',
        initSelection : function (element, callback) {callback([]);},
        formatResult: function(item) {return item.name;},
        formatSelection: function(item) {
            return item.name;
        }
    });
}

使用json对象设置选择

$("#yourSelect2Selector").select2("data", {name: 'My name is ...'});

或将数据作为字符串

$("#yourSelect2Selector").select2("data",'Your data is here')

答案 1 :(得分:0)

           // Get permissions
               $.ajax({
                   type: "Get",
                   url: "/Files/GetFolderPermissions",
                   data: {
                       folderId: folderId
                   },
                   dataType:"JSON"
               }).success(function (data) {                       
                    var  id = data.id
                    $('#select2 option[value="'+id+'"]').attr('selected','selected');

               }).error(function () {
                   alert('Ajax call is mislukt, kon de rollen niet ophalen');
               }).always(function () {
                   hideLoadingScreen();
               });

答案 2 :(得分:0)

最终的结果实际上相当容易,我在文档中找不到如何通过ajax调用自动选择值。

编写代码5分钟,找到解决方案大约3个小时..

您可以简单地为select2提供需要选择的项目数组。

所以我的情况是:

   var json = $.parseJSON(data);
                       var selectedValues = [];
                       $.each(json, function(bb) {
                           selectedValues.push(json[bb].Id);
                       });
                       $(".search").select2('val', selectedValues);