.NetCore 2 MVC上的JQuery自动完成

时间:2018-01-01 02:29:56

标签: c# asp.net-mvc asp.net-core jquery-ui-autocomplete asp.net-core-2.0

我正在处理在我的家庭控制器上调用方法的自动完成,javascript调用该方法并返回该数组。但是,值不显示在文本框下拉列表中,没有任何内容。

如果我使用直线阵列作为信号源并且不打电话给家用控制器那么它就可以正常工作。

我不知道我在这里丢失了什么,所以我缩小了家庭控制器方法只是为了在没有逻辑的情况下返回一个数组,直到我发现这个问题为止。

家庭控制器方法:

public string[] GetPatientName()
{
      var names = new List<string> { "Bent","Boon","Book", "Al", "Cat", "Doe", "Ed", "Fox", "George" };

      return names.ToArray();
}

使用Javascript:

<script language="javascript" type="text/javascript">
    $(function() {
        $('#tags').autocomplete({
            source: function(request, response) {
                $.ajax({
                    url: "/Home/GetPatientName",
                    data: "{ 'pre':'" + request.term + "'}",
                    dataType: "json",
                    type: "POST",
                    contentType: "application/json; charset=utf-8",
                    success: function(data) {
                    response($.map(data.d,
                        function (item) {
                            alert(item);
                            return { value: item }
                        }));
                    },
                    error: function(XMLHttpRequest, textStatus, errorThrown) {
                        alert(textStatus);
                    }
                });
            },
            delay: 0
        });
    });
</script>

HTML

<form>
    <input id="tags" type="text" />
</form>

1 个答案:

答案 0 :(得分:0)

2件事:
1.从我的脑海中,如果它与常规数组一起推卸并且没有使用jQuery map函数的结果,你可能需要使用ad .get()来获得一个干净的数组。准确地说

$.map(data.d,function (item) {
                              alert(item);
                               return { value: item }
                             }).get();

2。如果这不起作用,你真的必须分享更多的数据,比如什么是“响应”功能,以及你从服务器得到的确切响应(你可以从网络浏览器的开发工具中获得)