2014-03-26 34 views
0

當頁面加載時,我將一些數據加載到選擇框中,並使用ajax請求返回先前已選擇的json字段。Select2使用ajax負載設置選定的值

我該如何做到這一點select2設置一些項目選擇與ajax請求?

我的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(); 
}); 

回答

2

下面是一些例子我你
這取決於你的選擇2格式

$("#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') 
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(); 
       }); 
0

最終的結果實際上是很容易,我可以在任何地方的文檔中找到如何與Ajax調用,我可以自動選擇值。

編寫代碼5分鐘,發現該溶液約3小時..

可以簡單地給SELECT2需要被選擇的項目的陣列。

所以在我的情況是:

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