【发布时间】:2022-01-16 23:03:44
【问题描述】:
我在让 JQuery 自动完成功能在 Net Core 中工作时遇到了一些实际问题。
这是我的客户端脚本:
<script>
$(document).ready(function () {
$('#txtSystemUserDisplayName').autocomplete({
change: function (event, ui) {
if (!ui.item) {
$('#txtSystemUserDisplayName').val("");
}
},
source: function (request, response) {
$.ajax({
url: "@(Url.Action("SearchEmployeesAJAX", "Home" ))",
// data: "{ 'term': '" + request.term.replace(/'/gi, "\\'") + "'}",
data: { term: 'fumanchu' },
dataType: "json", type: "POST",
contentType: "application/json; charset=utf-8",
success: function (data) {
var x = Array.prototype.slice.call(data);
response($.map(x, function (item) {
return {
label: item.employeeDisplayName,
}
}))
}, error: function (response) { alert(response.responseText); }, failure: function (response) { alert(response.responseText); }
});
},
select: function (e, i) {
$("#hfSystemUserDisplayName").val(i.item.label);
},
minLength: 1
});
});
现在,当我开始输入时,自动完成功能会触发,但无论我做什么,控制器方法中的参数都是 NULL 。我在请求的数据对象中称之为“术语”并不重要。是的,我确保控制器方法参数的名称相同。例如
public JsonResult SearchEmployeesAJAX(String term) {
正如您所见,我什至将其注释掉并在其中硬编码了一个字符串,但仍然为空。 如果我将字符串设置为 URL 的一部分,它确实有效,例如:
url: "@(Url.Action("SearchEmployeesAJAX", "Home", new {@term="blahblahblah" }
这就是我过去在 .Net Framework 上执行自动完成的方式,从未遇到过问题。 Net Core 有什么我不知道的不同之处,也许是请求的形成方式有什么不同?
任何帮助将不胜感激。
【问题讨论】:
-
发送ajax请求导致控制器接收参数失败的可能性较大。无论如何,你已经解决了你的问题,恭喜。
标签: asp.net-core jquery-ui autocomplete