jquery自动完成不筛选并显示所有结果
我有一个简单的JsonResult操作,需要根据名称进行过滤,如果不存在,则将名称添加到数据库中。然而,我的自动完成结果只是让我在输入两个字母后得到表中的所有列表,忽略我的输入, 我的代码:jquery自动完成不筛选并显示所有结果,jquery,json,autocomplete,asp.net-mvc-5,Jquery,Json,Autocomplete,Asp.net Mvc 5,我有一个简单的JsonResult操作,需要根据名称进行过滤,如果不存在,则将名称添加到数据库中。然而,我的自动完成结果只是让我在输入两个字母后得到表中的所有列表,忽略我的输入, 我的代码: public JsonResult GetSubjectsName(string term) { var results = db.Subject.Where(s => term == null || s.SubjectName.ToLower().Con
public JsonResult GetSubjectsName(string term)
{
var results = db.Subject.Where(s => term == null ||
s.SubjectName.ToLower().Contains(term.ToLower())).Select(x => new
{ id = x.SubjectId, value = x.SubjectName }).Distinct().ToList();
return Json(results, JsonRequestBehavior.AllowGet);
}
<script type="text/javascript">
$("#term").autocomplete({
source: function (request, response) {
$.ajax({
url: "GetSubjectsName",
data: "{'keywords': '" + request.term + "' }",
dataType: 'json',
type: "POST",
contentType: "application/json; charset=utf-8",
dataFilter: function (data) { return data; },
success: function (data) {
response($.map(data, function (item) {
return {
label: item.value,
value: item.value,
id: item.id,
}
}))
}
});
},
minLength: 2,
});
public JsonResult GetSubjectsName(字符串术语)
{
var results=db.Subject.Where(s=>term==null||
s、 SubjectName.ToLower()包含(term.ToLower())。选择(x=>new
{id=x.SubjectId,value=x.SubjectName}).Distinct().ToList();
返回Json(结果,JsonRequestBehavior.AllowGet);
}
$(“#术语”).autocomplete({
来源:功能(请求、响应){
$.ajax({
url:“GetSubjectsName”,
数据:“{'keywords':'”+request.term+“}”,
数据类型:“json”,
类型:“POST”,
contentType:“应用程序/json;字符集=utf-8”,
dataFilter:函数(数据){返回数据;},
成功:功能(数据){
响应($.map)(数据、功能(项){
返回{
标签:item.value,
值:item.value,
id:item.id,
}
}))
}
});
},
最小长度:2,
});
以上代码的问题是您的操作
GetSubjectsName
使用了一个名为term
的参数,但在传入ajax时,您将参数作为'keywords'
传递,因此将代码更改为
<script type="text/javascript">
$(document).ready(function () {
$("#term").autocomplete({
source: function (request, response) {
$.ajax({
url: "GetSubjectsName",
data: { term: request.term },
dataType: 'json',
type: "POST",
contentType: "application/json; charset=utf-8",
dataFilter: function (data) { return data; },
success: function (data) {
response($.map(data, function (item) {
return {
label: item.value,
value: item.value,
id: item.id,
}
}))
}
});
},
minLength: 2,
});
});
</script>
$(文档).ready(函数(){
$(“#术语”).autocomplete({
来源:功能(请求、响应){
$.ajax({
url:“GetSubjectsName”,
数据:{term:request.term},
数据类型:“json”,
类型:“POST”,
contentType:“应用程序/json;字符集=utf-8”,
dataFilter:函数(数据){返回数据;},
成功:功能(数据){
响应($.map)(数据、功能(项){
返回{
标签:item.value,
值:item.value,
id:item.id,
}
}))
}
});
},
最小长度:2,
});
});
上述代码的问题是您的操作GetSubjectsName
使用了一个名为term
的参数,但在传入ajax时,您将该参数作为“关键字”
传递,因此将代码更改为
<script type="text/javascript">
$(document).ready(function () {
$("#term").autocomplete({
source: function (request, response) {
$.ajax({
url: "GetSubjectsName",
data: { term: request.term },
dataType: 'json',
type: "POST",
contentType: "application/json; charset=utf-8",
dataFilter: function (data) { return data; },
success: function (data) {
response($.map(data, function (item) {
return {
label: item.value,
value: item.value,
id: item.id,
}
}))
}
});
},
minLength: 2,
});
});
</script>
$(文档).ready(函数(){
$(“#术语”).autocomplete({
来源:功能(请求、响应){
$.ajax({
url:“GetSubjectsName”,
数据:{term:request.term},
数据类型:“json”,
类型:“POST”,
contentType:“应用程序/json;字符集=utf-8”,
dataFilter:函数(数据){返回数据;},
成功:功能(数据){
响应($.map)(数据、功能(项){
返回{
标签:item.value,
值:item.value,
id:item.id,
}
}))
}
});
},
最小长度:2,
});
});
请格式化您的问题。请格式化您的问题。