gpt4 book ai didi

jquery - asp.net mvc jquery 自动完成不会激活 Controller 操作

转载 作者:行者123 更新时间:2023-12-01 08:24:54 24 4
gpt4 key购买 nike

我的 jquery 包含设置正确,我相信,datepicker 正在工作。但是,当我在 Controller 上设置断点以进行自动完成时,在文本框中键入内容时它永远不会被激活。我有:

    <script type="text/javascript">
$(document).ready(function () {
$("input#sitesearchlist").autocomplete('<%= Url.Action("Filter", "Wos") %>');
});
</script>

其中 Filter 是 Controller Wos 上的一个操作,如下所示:

    public ActionResult Filter(string q)
{
var siteList = _sitesRepository.GetSites(q);
return Json(siteList, JsonRequestBehavior.AllowGet);
//return siteList;
}

我意识到可能应该返回一个简单的列表而不是 json 来配合第一个片段。最终我需要在数据中设置一个 id 而不是名称,所以这是一个尝试解决眼前问题的简化示例,即当我运行此命令时,没有从 Controller 操作中提取数据,并且当我设置断点时,它会在第一次运行时触发,但当您在文本框中输入文本时不会触发:

    <%= Html.TextBox("sitesearchlist") %>

所以我认为java被激活以进行自动完成,因为在某些时候它似乎已经缓存了字母“ki”,因为如果我输入它们,列表将出现在仅包含这些字母的文本框下方。不过,当您键入时,操作不会触发。

如果我访问该 url,我会得到如下 json 数据:

[{"SiteId":153,"SiteName":"Name of Site"}]

因此,出于某种原因,无论我尝试了什么,我都会陷入同样的​​困境。 Autocomplete 表示将 java 脚本放在页面的顶部(位于我的 site.master 中),而文本框显然位于页面的下方。我认为如果 json 数据即将到来(即使 Controller 断点从未被击中)并且格式错误,我应该得到一个垃圾列表或列表中的某些内容,是吗?感谢您的任何建议!!!!

编辑:找到this优秀的页面,最终结果如下:

    <script type="text/javascript">
$(document).ready(function () {
$("#tags").autocomplete({
source: function (request, response) {
$.ajax({
url: "/Wos/Filter", type: "POST", dataType: "json",
data: { searchText: request.term, maxResults: 10 },
success: function (data) {
response($.map(data, function (item) {
return { label: item.SiteName, value: item.SiteName, id: item.SiteId }
}))
}
})
},
minLength: 3

});
});
</script>

    [HttpPost]
public JsonResult Filter(string searchText, int maxResults)
{
var siteList = _sitesRepository.GetSites(searchText);
return Json(siteList, JsonRequestBehavior.AllowGet);
}

现在工作正常。如果没有完全理解这一点(刚刚开始使用 java,你看不出来吗?)看来请求/响应就是诀窍。我认为,这一定是由于页面上引用的 mvc2 更改造成的,因为这里引用了很多工作示例,但这些示例对我不起作用,即使有一个简单的列表,但这是可行的。

最佳答案

尝试使用 HttpPost 属性来装饰您的 Filter 函数,如下所示:

[HttpPost]
public ActionResult Filter(string q)
{
var siteList = _sitesRepository.GetSites(q);
return Json(siteList, JsonRequestBehavior.AllowGet);
//return siteList;
}

关于jquery - asp.net mvc jquery 自动完成不会激活 Controller 操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4697466/

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