2017-06-01 39 views
1

目标是将数据从Controller一侧导入Select2元素(多选切换打开)。我想安装到看起来像在堆栈溢出的标签盒,其中,你就可以开始输入标签,选择它,后来选择另外一个。使用AJAX将基于JSON的远程数据导入到Select2

我一直在使用Select2文档作为参考,但是请求没有被发送到控制器。

Select2 Documentation

我的代码:

$(".jsData").select2({   
    ajax: { 
     contentType: 'application/json', 
     url: '<%=Url.Action("GetDataMethod","RelevantController")%>', 
     type: 'POST', 
     dataType: 'json', 
     data: function (term) { 
      return { 
       sSearchTerm: term 
      }; 
     }, 
     results: function (data) { 
      var datajs = $.map(data, function (obj) { 
       obj.text = obj.someterm; // desired field, 
       obj.id = obj.someId; 
       return obj; 
      }); 
      return { 
       results: JSON.parse("[" + datajs.split(",") + "]") 
      }; 
     } 
    }, 
    multiple: true   
}); 

我是比较新的数据将动态地选择2,所以任何帮助将是非常赞赏。谢谢!

+0

是否使用'ASPX'视图引擎? – Manoj

+0

是的,我使用的ASPX(C#)视图引擎。 –

回答

0

UPDATE:找到了解决办法,在这里张贴他人。

HTML

<input class="jsData" style="width: 100%" id="select2Data" ></input> 

Javascript

   $(".jsData").select2({ 
         ajax: { 
          minimumInputLength: 4, 
          contentType: 'application/json', 
          url: '<%=Url.Action("GetData","Controller")%>', 
          type: 'POST', 
          dataType: 'json', 
          data: function (term) { 
           return { 
            sSearchTerm: term 
           }; 
          }, 
          results: function (data) { 
           return { 
            results: $.map(JSON.parse(data), function (item) { 
             return { 
              text: item.term, 
              slug: item.slug, 
              id: item.Id 
             } 
            }) 
           }; 
          } 
         }, 
         multiple: true 
        });