【问题标题】:Autocomplete in Asp mvc & AjaxAsp mvc 和 Ajax 中的自动完成
【发布时间】:2017-03-26 18:25:39
【问题描述】:

我有一个文本框,我想做一个自动完成功能

我有这个看法 我添加了库,但它根本没有响应

<link href="~/Content/themes/base/autocomplete.css" rel="stylesheet" />
<link href="~/Content/themes/base/jquery-ui.min.css" rel="stylesheet" />

<script src="~/Scripts/jquery-3.1.1.js"></script>
<input type="text" id="q" name="q" placeholder="Enter the text please" />

javascript代码是这样的

$(document).ready(function () {
    $("#q").autocomplete({
        source: function (request, response) {
            $.ajax({
                url: '/Book/AutoComplete/',
                data: "{ 'prefix': '" + request.term + "'}",
                dataType: "json",
                type: "POST",
                contentType: "application/json; charset=utf-8",
                success: function (data) {
                    response($.map(data, function (item) {
                        return { label: item.Name, value: item.Name };
                    }))
                },
                error: function (response) {
                    alert(response.responseText);
                },
                failure: function (response) {
                    alert(response.responseText);
                }
            });
        },
    });

这是控制器

public JsonResult AutoComplete(string prefix)
{
    var book = db.Book.Where(x => x.Name.Contains(prefix)).Select(x =>x.Name).ToList();
    return Json(book, JsonRequestBehavior.AllowGet);
}

【问题讨论】:

  • 您是否遇到任何错误?
  • 你的自动完成库在哪里?
  • @Azim 你的意思是有一个特殊的图书馆吗?我使用 jquery-3.1.1,我猜它提供了这个功能
  • @Usman 不,没有任何错误
  • 你能不能设置断点来检查天气是否会开始行动

标签: javascript jquery json ajax asp.net-mvc


【解决方案1】:

您必须对代码进行一些更改

1) 将 jquery ui 库添加到 header 中

<script src="https://code.jquery.com/ui/1.12.1/jquery-ui.js"></script>

2)data: "{ 'prefix': '" + request.term + "'}" 更改为data: { Prefix: request.term } 从开头和结尾删除""

所以你的代码会是这样的

 <script type="text/javascript">

    $(document).ready(function () {
        $("#q").autocomplete({
            source: function (request, response) {
                $.ajax({
                    url: "/Book/AutoComplete/",
                    type: "POST",
                    dataType: "json",
                    data: { Prefix: request.term },
                    success: function(data) {
                        response($.map(data,
                            function(item) {
                                return { label: item.Name, value: item.Name };
                            }));

                    }
                });
            },
            messages: {
                noResults: "", results: ""
            }
        });
    })
    </script>

【讨论】:

  • 先生,ajax 调用没有发生,我像你说的那样,但到目前为止没有返回数据
  • @AhmadTarabeshi 检查 jquery 库是否正确加载,并在 source: function (request, response) { alert(); 之后放置警报
  • 其实没有任何提示框
  • @AhmadTarabeshi 它工作正常我已经更新了我的答案并尝试放置一个断点并在文本框中写一些东西
猜你喜欢
  • 1970-01-01
  • 2019-04-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-11-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多