.Net Core 2 MVC上的JQuery Autocomplete

问题描述 投票:0回答:1

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

如果我使用直线阵列作为源并且不调用家庭控制器那么它可以正常工作。

我没有看到我在这里缺少什么,所以我缩小了home控制器方法只是为了在没有逻辑的情况下返回一个数组,直到我把这个问题解决掉。

家庭控制器方法:

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>
c# asp.net-mvc asp.net-core jquery-ui-autocomplete asp.net-core-2.0
1个回答
0
投票

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

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

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

© www.soinside.com 2019 - 2024. All rights reserved.