如何在select2中使用ajax?

Niv*_*a G 2 javascript ajax jquery jquery-select2 typescript

我在asp.net核心工作。我正在使用打字稿。我正在使用 select2。

HTML:-

  <select multiple="multiple" id="e1" class="js-example-basic-multiple js-states form-control js-data-example-ajax">
  </select>
Run Code Online (Sandbox Code Playgroud)

脚本:-

  $(".js-data-example-ajax").select2(
        {
            ajax: {
                url: '/place',
                dataType: 'json',
                type: "GET",
                data: function (term) {
                    return {
                        term: term
                    };
                },
                processResults: function (data) {
                    return {
                        results: data.items,
                    };
                }
            },

           });
Run Code Online (Sandbox Code Playgroud)

css 和 js:-

 <link href="https://cdnjs.cloudflare.com/ajax/libs/select2/4.0.3/css/select2.min.css" rel="stylesheet" />

 <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
 <script src="https://cdnjs.cloudflare.com/ajax/libs/select2/4.0.3/js/select2.min.js"></script>
Run Code Online (Sandbox Code Playgroud)

我从控制器中获取 select2 的值。使用此代码时,值从控制器返回。但不在 select2 下拉列表中绑定。

我从控制器返回了 Json 数据。

谁能建议我犯了什么错误?

select2 的版本:4.0.3

asn*_*awi 8

您需要映射 api 返回的结果。

https://jsfiddle.net/vg7pgbcb/1/

$(".js-data-example-ajax").select2(
    {
        ajax: {
            url: 'https://api.github.com/search/repositories',
            dataType: 'json',
            type: "GET",
            delay: 250,
            data: function (params) {
                return {
                    q: params.term
                };
            },
            processResults: function (data) {
                    var res = data.items.map(function (item) {
                        return {id: item.id, text: item.name};
                    });
                return {
                    results: res
                };
            }
        },

       });
Run Code Online (Sandbox Code Playgroud)

select2 期望 id 和 text 属性来呈现列表

{
"results": [
    {
        "id": "CA",
        "text": "California"
    },
    {
        "id": "CO",
        "text": "Colarado"
    }
]
}
Run Code Online (Sandbox Code Playgroud)