在我正在进行的项目中,我设置了一个带有数据库后端的MVC 4 Web App。几乎从一开始,我就已经使用JQuery UI进行自动完成了。一切都很完美。我多次更新了JQuery UI的版本,但每次升级都能正常工作。我现在的版本是1.11.2。
然而,今天,我转移了一个表格覆盖的区域,因为它包含了它不一定需要的东西。我自己完成的自动填充框不再需要处于格式状态,因此它们被移出了。自动完成框没有其他功能。
出于某种原因,自动完成格式化现在已经破坏,其中一个框甚至不会返回任何内容。那个仍在部分工作的人正在拔出正确的"值",但"标签"是一个没有像以前那样出现的人。完全破碎的人不能显示其中任何一个。
自动填充的脚本位于视图页面底部的普通脚本标记内,但不在@section或任何内容的内部。
这是一半工作的自动完成代码:
$("#agencyCode").autocomplete({
source: function (request, response) {
$.ajax({
url: "/Employee/LookupAgencies",
type: "POST",
dataType: "json",
data: { term: request.term },
success: function (data) {
response($.map(data, function (item) {
return { label: item.Code + " - " + item.Name, value: item.Code, desc: item.Name, parent: item.ParentID };
}));
}
});
},
select: function(event,ui){
document.getElementById('agencyChoice').innerHTML = ui.item.desc;
}
});
而这是一个完全被打破的人:
$("#fOOCTTaxCode").autocomplete({
source: function (request, response) {
$.ajax({
url: "/Employee/LookupFOOCT",
type: "POST",
dataType: "json",
data: { term: request.term },
success: function (data) {
response($.map(data, function (item) {
return { label: item.FederalTaxID + " - " + item.Name, value: item.FederalTaxID, desc: item.Name };
}))
}
})
},
select: function (event, ui) {
document.getElementById('fooctChoice').innerHTML = ui.item.desc;
}
});
查询数据库以获取自动完成结果的后端部分如下所示:
public ActionResult LookupAgencies(string term)
{
int currentCampaign = ePledgeDataLayer.Campaign.GetCurrentCampaign();
var retValue = (from r in ePledgeDataLayer.Organization.GetAgencies(currentCampaign)
where r.Code.Contains(term)
select new { r.Code, r.Name, r.ParentID }).Distinct();
return Json(retValue, JsonRequestBehavior.AllowGet);
}
破碎的后端正在查询同一个表,除了切换到适当的名称以获取其他列。
我已检查过数据库,但我没有任何可能会混淆的重复条目。在查看此问题的其他答案时,他们似乎都没有解决这个特定类型的问题。当我尝试从自动完成获取响应时,Visual Studio 2013或Chrome控制台内部不会抛出任何错误。
我尝试在该区域周围添加另一种形式,看看是否需要触发一些奇怪的东西以便工作而且什么也没做。
我现在需要在我的脚本周围添加@section吗?或者我错过了一些完全明显的东西?