我想在 asp.net mvc4 应用程序中使用自动完成小部件。我能够调用该操作以从控制器获取自动完成值列表。不幸的是,我无法将其添加到建议列表中。我认为自动完成 ajax 调用的成功部分中的 .map(data, function(item) 不起作用。但我真的不知道为什么。我确信所有脚本和 css 都正确加载。我说的是控制器动作返回建议列表,还有视图中的脚本和来自 firebug 的响应。我也在尝试 jqueryui 页面中的演示示例并且它正在工作,但不知何故它不适用于我返回的数据。有人可以帮助我并告诉我为什么吗?谢谢进步。
控制器中的操作:
public ActionResult GetCities(int RegionId, string Name)
{
var ret = db.Cities.Where(c => c.RegionId == RegionId &&
c.Name.Contains(Name)).Select(a => new{ CityId = a.CityId, Name = a.Name});
return Json(ret);
}
视图中的脚本:
<script type="text/javascript">
$(function() {
$("#City").autocomplete({
source: function(request, response) {
$.ajax({
url: "@Url.Action("GetCities")",
dataType: "json",
contentType: "application/json; charset=utf-8",
method: "POST",
data: "{'RegionId': " + $("#Region").val() + ", 'Name': '" + request.term + "'}",
success: function (data) {
response( $.map( data, function( item ) {
return {
label: item.Name,
value: item.Name
}
}));
},
error: function(XMLHttpRequest, textStatus, errorThrown) {
alert(textStatus);
}
});
},
minLength: 2
});
});
响应(来自萤火虫)
[{"CityId":16,"Name":"Kordíky"},{"CityId":94,"Name":"Korytárky"}]