select2 with ajax MVC没有命中结果选项

时间:2016-06-29 10:18:53

标签: jquery ajax asp.net-mvc select2

我使用select2作为autocomplete并选择多个选项。以下是我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"}]

但无论如何,我放置在results ajax select2 v4.0.1选项中的调试器都没有被命中,因此也没有显示数据。我如何收到它作为回应并显示它?

更新

我正在使用Required date

2 个答案:

答案 0 :(得分:0)

找到解决方案

我必须在processResults中使用results而不是$.ajax。了解我实际访问 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

答案 1 :(得分:0)

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

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

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