jquery - 绑定数据库时,Devbridge 自动完成 ajax 不起作用
问题描述
我想在我的项目中使用devbridge自动完成 ajax。该插件必须绑定数据库中的数据。在下面你可以看到我的代码:
在视图中
<input type="text" id="searchinput" name="searchinput" />
jQuery
<script>
$('#searchinput').autocomplete({
serviceUrl: '/Controller/fetchCondidate',
onSelect: function (suggestion) {
alert('You selected: ' + suggestion.value + ', ' + suggestion.data);
}
});
</script>
在控制器中
public IActionResult fetchCondidate()
{
var q = JsonConvert.SerializeObject
(_context.Candidator.Select(ca => new { value = ca.Id, data = ca.Name }));
return Json(new { suggestion = q });
}
但是我在控制台中收到此错误并且自动完成功能不起作用:
无法读取未定义的属性“长度”
在 serach 之后,我发现我发送了错误的 json 格式。现在我如何发送这种格式来查看
{
suggestions: [
{ "value": "United Arab Emirates", "data": "AE" },
{ "value": "United Kingdom", "data": "UK" },
{ "value": "United States", "data": "US" }
]
}
解决方案
根据 github 中的参考,当你从控制器返回数据时,字段名称是suggestions
而不是suggestion
. 另外,如果您选择的字段(如Id和Name)包含int
类型值,您可以将它们转换为string
类型,否则会导致jquery.autocomplete.js
文件错误:
public IActionResult fetchCondidate()
{
var q = _context.Candidator.Select(ca => new { value = ca.Id.ToString(), data = ca.Name.ToString() }).ToList();
return Json(new { suggestions = q });
}
看法 :
$('#searchinput').autocomplete({
serviceUrl: '/Controller/fetchCondidate',
onSelect: function (suggestion) {
alert('You selected: ' + suggestion.value + ', ' + suggestion.data);
},
});
推荐阅读
- unity3d - Unity2D:在拖动预制件时播放实例化预制件的动画
- jquery - Laravel 5 with Blade ... 使用 jQuery 使用辅助函数 route() 时我无法设置数据属性,但可以使用相对路径
- security - 如果 IP 地址不是“秘密”,IP 地址白名单是否有用?
- php - 使用 Eloquent 从具有外键的单个表中获取数据到另外两个表 - laravel
- android - 跨客户端 Google OAuth:Xamarin/Android 到 .NET Web 服务
- extract - .EAppxBundle 与 .AppxBundle 相比是什么
- java - 停止编辑日期选择器和组合框字段而不禁用它们
- java - 基于spark和Java两个条件的过滤列
- python-3.x - 如何在 Docker 容器中运行 pdfkit from_file
- python - 删除列但保留特定值 pandas df