自动完成:显示带有json数据的结果

希姆

我正在尝试构建自动完成功能,但是在零件上打补丁时遇到了麻烦。

首先,我的观点包括以下领域:

<p>@Html.TextBoxFor(_item => _item.mCardName, Model.mCardName, new { @class = "cardText", id = "card_name"} )  </p>

很简单。接下来,javascript调用:

<script type="text/javascript">
    $(function() {
        $('#card_name').autocomplete({
            minlength: 5,
            source: "@Url.Action("ListNames", "Card")",
            select: function (event, ui) {
                $('#card_name').text(ui.item.value);
            },
        });
    });
</script>

哪个调用此方法:

public ActionResult ListNames(string _term)
{
    using (BlueBerry_MTGEntities db = new BlueBerry_MTGEntities())
    {
        db.Database.Connection.Open();

        var results = (from c in db.CARD
                   where c.CARD_NAME.ToLower().StartsWith(_term.ToLower())
                   select new {c.CARD_NAME}).Distinct().ToList();

        JsonResult result = Json(results.ToList(), JsonRequestBehavior.AllowGet);

        return Json(result, JsonRequestBehavior.AllowGet);
    }
}

如果我插入“ Power”一词,JSON数据将像这样回发:

{"ContentEncoding":null,"ContentType":null,"Data":[{"CARD_NAME":"Power Armor"},{"CARD_NAME":"Power Armor (Foil)"},{"CARD_NAME":"Power Artifact"},{"CARD_NAME":"Power Conduit"},{"CARD_NAME":"Power Conduit (Foil)"},{"CARD_NAME":"Power Leak"},{"CARD_NAME":"Power Matrix"},{"CARD_NAME":"Power Matrix (Foil)"},{"CARD_NAME":"Power of Fire"},{"CARD_NAME":"Power of Fire (Foil)"},{"CARD_NAME":"Power Sink"},{"CARD_NAME":"Power Sink (Foil)"},{"CARD_NAME":"Power Surge"},{"CARD_NAME":"Power Taint"},{"CARD_NAME":"Powerleech"},{"CARD_NAME":"Powerstone Minefield"},{"CARD_NAME":"Powerstone Minefield (Foil)"}],"JsonRequestBehavior":0,"MaxJsonLength":null,"RecursionLimit":null}

作为参考,以下是两个运行的脚本:

<script src="/Scripts/jquery-2.0.3.js"></script>
<script src="//code.jquery.com/ui/1.10.4/jquery-ui.js"></script>

但是什么也不显示。我希望看到显示的结果像普通自动完成一样。谁能帮我解决问题?

编辑

我已经为此工作了一段时间。我在那里张贴了新的javascript,控制器方法和获得的结果。但是,该操作仍然无法正常工作,我将不胜感激。

希姆

最后!休息一会后,我得到了答案。

看到这个吗?

public ActionResult ListNames(string _term)
{
    using (BlueBerry_MTGEntities db = new BlueBerry_MTGEntities())
    {
        db.Database.Connection.Open();

        var results = (from c in db.CARD
                   where c.CARD_NAME.ToLower().StartsWith(_term.ToLower())
                   select new {c.CARD_NAME}).Distinct().ToList();

        JsonResult result = Json(results.ToList(), JsonRequestBehavior.AllowGet);

        return Json(result, JsonRequestBehavior.AllowGet);
    }
}

碰巧的是,我正在建立Json另一个Json对象的对象。这就是为什么数据未正确传递的原因。

我已经重建了该方法,使其工作并按如下方式对其进行了改进:

public JsonResult ListCardNames(string term)
{
    using (BlueBerry_MagicEntities db = new BlueBerry_MagicEntities())
    {
        db.Database.Connection.Open();

        var results = from cards in db.V_ITEM_LISTING
                      where cards.CARD_NAME.ToLower().StartsWith(term.ToLower())
                      select cards.CARD_NAME + " - " + cards.CARD_SET_NAME;

        JsonResult result = Json(results.ToList(), JsonRequestBehavior.AllowGet);

        return result;
    }

和我的JavaScript动作:

<script type="text/javascript">
    $(function() {
        $('#searchBox').autocomplete({
            source: function(request, response) {
                $.ajax({
                    url: "@Url.Action("ListCardNames")",
                    type: "GET",
                    dataType: "json",
                    data: { term: request.term },
                    success: function(data) {
                        response($.map(data, function(item) {
                            return { label: item, value1: item };
                        }));
                    }
                });
            },
            select:
                function(event, ui) {
                    $('#searchBox').val(ui.item);
                    $('#cardNameValue').val(ui.item);
                    return false;
                },
            minLength: 4
        });
    });
</script>

现在,所有事物都像魅力一样发挥作用。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

自动完成显示所有结果

来自分类Dev

带有可拖动结果的jQuery自动完成

来自分类Dev

显示自动完成的干净结果

来自分类Dev

如果没有结果,则jQuery自动完成显示错误MSG

来自分类Dev

显示带有JQuery自动完成建议的下拉列表

来自分类Dev

检索带有角的自动完成表单输入的数据

来自分类Dev

带有标签元数据的jquery自动完成类别

来自分类Dev

带有json文件的jQuery UI自动完成

来自分类Dev

带有json文件的jQuery UI自动完成

来自分类Dev

带有结果列表的JSON数据迭代

来自分类Dev

预先输入自动完成结果不显示

来自分类Dev

jQuery的自动完成不显示结果

来自分类Dev

JQuery Ajax 自动完成不显示结果

来自分类Dev

jquery自动完成不显示结果

来自分类Dev

结果未显示在自动完成(Angular)中

来自分类Dev

使用JSON数据自动完成

来自分类Dev

为什么没有显示带有QCompleter的用于自动完成的QLineEdit?

来自分类Dev

为什么没有显示带有自动完成功能的QCompleter的QLineEdit?

来自分类Dev

jQuery自动完成,解析JSON结果

来自分类Dev

jQuery自动完成结果框未显示,已将JSON流转换为`label`和`value`

来自分类Dev

为什么JQuery自动完成结果没有显示在浏览器中?

来自分类Dev

如何仅在MaterialUI自动完成中显示带有条件的NoOptionsText

来自分类Dev

带有显示奇怪问题的适配器的自动完成文本视图

来自分类Dev

bash自动完成失败,并带有通配符

来自分类Dev

带有URL的jQuery UI自动完成

来自分类Dev

在自动完成的 jQuery UI 中显示数据

来自分类Dev

jQuery自动完成不显示数据

来自分类Dev

jQueryUI:带有大数据的自动完成功能会挂在浏览器上

来自分类Dev

带有servlet的jQuery自动完成UI不返回任何数据

Related 相关文章

热门标签

归档