【问题标题】:JQuery Autocomplete on .NetCore 2 MVC.NetCore 2 MVC 上的 JQuery 自动完成
【发布时间】:2018-01-01 02:29:56
【问题描述】:

我正在开发一个自动完成功能,它在我的家庭控制器上调用一个方法,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>

【问题讨论】:

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


    【解决方案1】:

    2 件事:
    1.在我看来,如果它与常规数组一起使用并且不能与 jQuery map 函数的结果一起使用,您可能需要添加 .get() 以获得一个干净的数组。准确的说

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

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

    【讨论】:

    • Uncaught TypeError: undefined is not a function at Array.map (&lt;anonymous&gt;) at Object.success ((index):63) at i (jquery.min.js:2) at Object.fireWith [as resolveWith] (jquery.min.js:2) at A (jquery.min.js:4) at XMLHttpRequest.&lt;anonymous&gt; (jquery.min.js:4) 错误使用代码success: function (data) { $.map(data.d,function (item) { alert(item); return { value: item } }).map(); }
    • 我从这篇文章中得到了它。我只是返回了 JSON 而不是数组 blogs.msdn.microsoft.com/stuartleeks/2012/04/23/…
    猜你喜欢
    • 1970-01-01
    • 2018-09-05
    • 2015-07-19
    • 2011-01-24
    • 1970-01-01
    • 1970-01-01
    • 2013-09-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多