gpt4 book ai didi

javascript - Ajax 自动完成搜索不显示结果

转载 作者:行者123 更新时间:2023-11-28 18:59:43 25 4
gpt4 key购买 nike

我正在尝试实现我的第一个快速搜索功能,该功能可以在您键入时在下拉列表中显示可能的结果。我想我真的很接近了。但由于某种原因,快速结果并没有显示在浏览器中。

这是 View 中的代码:

@using (Ajax.BeginForm("Search", "Home", new AjaxOptions
{
HttpMethod = "GET",
InsertionMode = InsertionMode.ReplaceWith,
UpdateTargetId = "searchResults"
}))
{
<input type="text" name="q" data-autocomplete="@Url.Action("QuickSearch", "Home")" />
<input type="submit" value="Search" />
}

<table id="searchResults"></table>

然后发送到浏览器的 HTML:

<form action="/Home/Search" data-ajax="true" data-ajax-method="GET" data-ajax-mode="replace-with" data-ajax-update="#searchResults" id="form0" method="post">
<input type="text" name="q" data-autocomplete="/Home/QuickSearch" class="ui-autocomplete-input" autocomplete="off" role="textbox" aria-autocomplete="list" aria-haspopup="true">
<input type="submit" value="Search">
</form>

<table id="searchResults"></table>

我可以在 Controller 中查询数据库的方法上放置一个断点,并使用 Watch,我可以看到每次按键都会返回准确的结果:

    public ActionResult QuickSearch(string term)
{
var restaurants = _db.Restaurants
.Where(r => r.Name.Contains(term))
.Take(10)
.Select(r => new { label = r.Name });
return Json(restaurants, JsonRequestBehavior.AllowGet);
}

最后,这是将它们结合在一起的 JavaScript:

/// <reference path="jquery-1.4.4-vsdoc.js" />
/// <reference path="jquery-ui.js" />
/// <reference path="jQuery.tmpl.js" />

$(document).ready(function () {

$(":input[data-autocomplete]").each(function () {
$(this).autocomplete({ source: $(this).attr("data-autocomplete") });
});
$(":input[data-datepicker]").datepicker();

$("#searchForm").submit(function () {
$.getJSON($(this).attr("action"), // the url to get JSON from
$(this).serialize(), // make q=yellow, for example
function (data) { // what to do with the response
var result = $("#searchTemplate").tmpl(data);
$("#searchResults").empty()
.append(result);
}
);
return false;
});
})

我包括脚本:

<script src="/Scripts/jquery-1.10.2.js"></script>
<script src="/Scripts/respond.js"></script>
<script src="/Scripts/jquery-ui.js"></script>
<script src="/Scripts/jquery.unobtrusive-ajax.js"></script>

另外...这可能是同一问题的一部分...不仅快速结果不显示在屏幕下方的下拉列表中,而且当我单击“搜索”时,结果显示在空白屏幕中,而不是按预期出现在原始 View 中。

最佳答案

在您的示例中,您从 Controller 返回带有 propertyobject ,而 jquery 自动完成功能无法理解它。

更改此:

.Select(r => new { label = r.Name });

对此:

.Select(r => r.Name );

一切都会顺利

关于javascript - Ajax 自动完成搜索不显示结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32846863/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com