我想在下拉列表中显示一些数据并实现自动完成功能。为了做到这一点,我使用了select2
,一个jQuery插件。
我的问题是搜索框中写的搜索词没有作为参数传递给我在控制器中的方法。这是我的ajax请求:
$('#someId').select2({
minimumInputLength: 1,
allowClear: true,
ajax: {
url: "/controllerName/methodName",
dataType: "json",
type: "GET",
data: function (params) {
var queryParameters = {
term: params.term
}
return queryParameters;
},
processResults: function (data) {
return {
results: $.map(data, function (students) {
return {
text: students.name,
id: students.id
}
})
};
}
}
});
这是html:
<div class="form-group">
<label asp-for="someId" class="col-md-2 control-label"></label>
<div class="col-md-4">
<select asp-for="someId" class="form-control" style="display:table-cell;
width:100%"></select>
</div>
</div>
这是我在控制器中的方法:
[HttpGet]
public IActionResult GetStudents(string searchTerm)
{
//some code
}
我的Ajax请求有什么问题吗?
答案 0 :(得分:0)
您正在发送一个名为“term”的变量作为搜索参数。但是你的控制器期待一个名为“searchTerm”的变量。
变量名称需要匹配,否则控制器应该如何知道从查询字符串中选择什么?
特别考虑从浏览器发送多个参数的常见情况。此时,关键是存在命名约定,因此正确的参数与控制器方法中的正确变量匹配。