我试图使用自动完成的小部件,通过AJAX请求从远程源获取其数据。数据应该作为AddressController上GetDistricts
Action方法的JSON结果。不幸的是,当我输入文本框时,菜单不会弹出。我检查了Firebug的响应,一切似乎好: {"districtNames":["Beirut","Bekaa","Mount Lebanon","South","Nabatieh","North"]}
,所以我真的不知道发生了什么事情......这里是我的jQuery代码:jQuery UI自动完成:菜单不显示
district.autocomplete({
minLength: 2,
source: function (request, response) {
$.ajax({
type: "GET",
url: '@Url.Action("GetDistricts", "Address")',
dataType: "json",
success: function (data) {
response($.map(data, function (item) {
return {
label: item.text,
value: item.text
}
}))
}
})
}
});
这是我的操作方法:
public ActionResult GetDistricts(string term)
{
var districts = _service.GetDistricts();
var districtNames = from c in districts select c.Name;
return Json(new {districtNames}, JsonRequestBehavior.AllowGet);
}
PS:我尝试使用本地数据,其中源是一个数组,它工作得很好。所以我不认为这是与CSS有关......
@Andrew Whitaker:是的,我改变了我从操作方法发回数据的方式。它工作okey和菜单弹出。但我无法选择一个项目。它一直抛出这个错误:'f.item是null'。这可能是自动完成小部件本身的错误还是什么? – Kassem 2011-05-01 22:00:24
@Kassem:有趣 - 你还在将'source'定义为一个函数,还是仅仅使用url来进行控制器操作? – 2011-05-01 22:05:40
@Andrew Whitaker:只是控制器操作的网址。当我尝试将源定义为函数时,菜单弹出“空”。我检查了萤火虫中的'ul'标签,所有'li'标签里面什么也没有。有什么想法吗? – Kassem 2011-05-01 22:07:15