我有一个用于在员工之间进行搜索的搜索字段。视图的代码如下所示:
<input id="employeeSearchText" name="employeeSearchText" type="text" autocomplete="off" />
<script type="text/javascript" language="javascript">
$("#employeeSearchText").autocomplete({
source: function (request, response) {
$.ajax({
url: "/Medarbejdere/Soeg",
type: "POST",
dataType: "json",
data: { searchText: request.term },
success: function (data) {
response($.map(data, function (item) {
return { label: item.Firstname + " "
+ item.Lastname, value: item.description, id: item.description }
}))
}
})
}
});
</script>
路径“/Medarbejdere/Soeg”在控制器中定义为:
[HttpPost]
public JsonResult Soeg(string searchText)
{
EmployeeRepository repo = new EmployeeRepository();
var result = repo.SearchByKeywords(searchText.Trim(), 10);
return Json(result, JsonRequestBehavior.AllowGet);
}
我的问题是,对于某些输入,结果永远不会出现。实际上只输入一个字母并等待输入,英文字母表中相同的 5 个字母永远不会返回结果,始终如一。
在所有输入的“Soeg”操作中放置一个断点,并且 repo.SearchByKeywords() 也为所有输入返回正确的结果,但由于某种原因,当结果返回给 AJAX 调用时,它永远不会呈现。
我完全不知道在这个阶段如何进行调试。我使用 MVC 迷你分析器,它显示了以下行为(假设字母“c”不给出结果,而字母“e”给出)
键入“e”将触发对操作的调用,触发断点,浏览器左侧的 mvc-mini-profiler 调试信息将显示调用花费了多长时间。键入“c”将触发对操作的调用,触发断点,但不会显示在 mvc-mini-profiler 调试窗口中。
现在,如果我键入另一个“c”以使搜索字符串为“cc”,分析器实际上会显示两个对操作的调用,但仅在键入第二个“c”时
有关如何进一步调试问题的解决方案甚至建议的任何想法?
提前致谢!