select2 with ajax MVC does not hit results 选项

select2 with ajax MVC does not hit results option

我正在使用 select2 作为 autocomplete 和 select 多个选项。下面是我如何 initialize select2

$(".selectpickerphone").select2({
  allowClear: true,
  minimumInputLength: 2,
  ajax: {
    cache: false,
    dataType: "json",
    type: "GET",
    url: "@Url.Action("GetContactNumbers ", "HMController")",
    data: function(searchTerm) {
      return searchTerm;
    },
    results: function(data) {
      debugger;
      if (data.isUser) {
        return;
      }
      return {
        results: $.map([data], function(item) {
          return {
            text: item.name,
            id: item.PhoneNum,
            data: item
          }
        })
      };
    }
  },
  formatResult: function(response) {
    data = response.data;
    console.log(data);
    this.description =
      '<div id="fmu_select2_ajax_result">' +
      "<div>Nom du produit : " + data.name + "</div>" +
      "<div>" +
      "<div>" + data.PhoneNum+ "</div>" +
      "</div>" +
      '</div>';
    return this.description;
  },
  formatSelection: function(response) {
    data = response.data;
    return data.PhoneNum+ " - " + data.name;
  },
  escapeMarkup: function(m) {
    return m;
  },
  dropdownCssClass: "bigdrop"
});

下面是我的JsonResult - actionmethod

[HttpGet]
public JsonResult GetContactNumbers(string term)
{
    using (_db = new Context())
    {
        _adRep = new ADRP();
        var contactList = _adRep.FetchCustomerUserPhone(_db,term);
        return Json(contactList, JsonRequestBehavior.AllowGet);
    }
}

在“网络”选项卡中查看时,我收到以下响应。

[{"name":"Guruprasad Rao","isUser":true,"PhoneNum":"8495000049"},
 {"name":"Guruprasad Rao","isUser":false,"PhoneNum":"8495000050"},
 {"name":"Test","isUser":false,"PhoneNum":"8495000051"}]

但无论如何,我放在 ajaxresults 选项中的调试器不会被命中,因此数据也不会显示。我将如何接收它作为响应并显示它?

更新

我正在使用select2 v4.0.1

找到解决方案

我不得不在 $.ajax 中使用 processResults 而不是 results。当我真正访问 official site 时才知道。可能已针对 version > 4.0.

进行了更改
processResults: function(data) {
  return {
    results: $.map(data, function(item) {
      return {
        text: item.name,
        id: item.PhoneNum,
        data: item
      }
    })
  };
}

随着 formatResultformatSelection 在上述版本之后已更改为 templateResulttemplateSelection

Docs here

我试过它在 asp.net mvc 5 中绑定。

我使用了 web 服务,Controller Http post 方法,Web Api 2 但是在 select2 的回调事件中没有使用。

使用Asp.net Generic handler产生回调结果然后尝试绑定到select2。